首页 > 解决方案 > df.append() 未附加到 DataFrame

问题描述

我提出了这个关于添加带索引的行的问题,但我还不清楚当没有索引时如何/为什么会发生这种情况:

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)

标签: pythonpandasdataframeappendseries

解决方案


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

推荐阅读