df.append()未追加到DataFrame

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)

cs9*_*s95 9

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

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)
Run Code Online (Sandbox Code Playgroud)

将其他行附加到该帧的末尾,返回一个新对象。不在此框架中的列将作为新列添加。

您需要将结果分配回去。

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认同)

小智 5

语句 data.append(sub_data) 本身不起作用。

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

重新分配它为我解决了这个问题。其他地方没有的好提示。