我制定了这个关于使用索引添加行的问题,但我还不清楚在没有索引时如何/为什么会发生这种情况: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 DNaN 4 5 6 7我猜LOC和iLOC都不能用来追加没有索引名的行(即Loc加索引名NaN,索引号高于数据库行数时不能使用iLoc)
2 回答
呼如林
TA贡献1798条经验 获得超3个赞
DataFrame.append不是就地操作。从文档中,
DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)
将 other 的行附加到此帧的末尾,返回一个新对象。不在此框架中的列将作为新列添加。
您需要将结果分配回来。
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
扬帆大鱼
TA贡献1799条经验 获得超9个赞
语句 data.append(sub_data) 本身不起作用。
但是语句 data=data.append(sub_data) 会起作用
重新分配它为我解决了这个问题。其他地方没有的好提示。
添加回答
举报
0/150
提交
取消