df.append()未追加到DataFrame

时间:2018-12-25 18:19:56

标签: python pandas dataframe append series

我制定了this question关于添加带索引的行的信息,但是我还不清楚在没有索引的情况下这是如何/为什么发生的:

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)

我希望这里有2X4数据帧。 但是,没有添加任何值,也没有发生错误。

print(df8.shape)
#>>> (0,4)

为什么不添加系列,为什么没有出现任何错误?


如果我尝试使用LOC添加行,则会添加索引,

df8.loc[df8.index.max() + 1, :] = [4, 5, 6,7]
print(df8)

结果:

     A  B  C  D
NaN  4  5  6  7

我想LOC和iLOC都不能用来添加没有索引名称的行(即Loc添加索引名称NaN,并且当索引号高于数据库的行时不能使用iLoc)

2 个答案:

答案 0 :(得分:5)

DataFrame.append不是就地操作。在文档中,

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

答案 1 :(得分:4)

语句data.append(sub_data)不能单独工作。

但是语句data = data.append(sub_data)将起作用

将其分配回给我解决了这个问题。好提示,其他地方都没有。