Ber*_*nes 3 python append series dataframe pandas
我提出了有关添加带有WITH索引的行的问题,但是我还不清楚在没有索引的情况下为什么/为什么发生这种情况:
columnsList=['A','B','C','D']
df8=pd.DataFrame(columns=columnsList)
L=['value aa','value bb','value cc','value dd']
s = pd.Series(dict(zip(df8.columns, L)))
df8.append(s,ignore_index=True)
df8.append(s,ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
我希望这里有2X4数据帧。但是,没有添加任何值,也没有发生错误。
print(df8.shape)
#>>> (0,4)
Run Code Online (Sandbox Code Playgroud)
为什么不添加系列,为什么不出现任何错误?
如果我尝试使用LOC添加行,则会添加索引,
df8.loc[df8.index.max() + 1, :] = [4, 5, 6,7]
print(df8)
Run Code Online (Sandbox Code Playgroud)
结果:
A B C D
NaN 4 5 6 7
Run Code Online (Sandbox Code Playgroud)
我猜LOC和iLOC都不能用于添加没有索引名称的行(即Loc添加索引名称NaN,并且当索引号高于数据库行时不能使用iLoc)
DataFrame.append不是就地操作。从文档中
Run Code Online (Sandbox Code Playgroud)DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)将其他行附加到该帧的末尾,返回一个新对象。不在此框架中的列将作为新列添加。
您需要将结果分配回去。
df8 = df8.append([s] * 2, ignore_index=True)
df8
A B C D
0 value aa value bb value cc value dd
1 value aa value bb value cc value dd
Run Code Online (Sandbox Code Playgroud)
小智 5
语句 data.append(sub_data) 本身不起作用。
但是语句 data=data.append(sub_data) 会起作用
重新分配它为我解决了这个问题。其他地方没有的好提示。