我仍然不明白我做错了什么。df4 = pd.DataFrame({'Q':['chair', 'desk', 'monitor', 'chair'], 'R':['red', 'blue', 'yellow', 'purple'], 'S': ['english', 'german', 'spanish', 'english']})df4 Q R S0 chair red english1 desk blue german2 monitor yellow spanish3 chair purple english>> df5 = df4>>> df5 = df5.append(['Q'] * 2, ignore_index=True)>>> df5 Q R S 00 chair red english NaN1 desk blue german NaN2 monitor yellow spanish NaN3 chair purple english NaN4 NaN NaN NaN Q5 NaN NaN NaN Q>>> 在我的情况下,为什么要添加0列?我的初始DF不为空。
2 回答
![?](http://img1.sycdn.imooc.com/533e4d470001a00a02000200-100-100.jpg)
动漫人物
TA贡献1815条经验 获得超10个赞
pandas 的帮助页面附加状态:“将其他行附加到此框架的末尾,返回一个新对象。不在此框架中的列将添加为新列。”
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.append.html
在您的情况下,您没有任何供应列名称,因此创建了新列。
追加新行的多种方法。单程:
df5 = df5.append({'Q':'Q', 'R':'Q', 'S':'Q'}, ignore_index=True)
![?](http://img1.sycdn.imooc.com/545865470001bf9402200220-100-100.jpg)
ITMISS
TA贡献1871条经验 获得超8个赞
您试图将列表追加['Q', 'Q']到具有3列的数据框。这是模棱两可的。
由于尚不清楚,因此Pandas决定在追加之前将其传递['Q', 'Q']给pd.DataFrame构造函数:
out1 = df5.append(pd.DataFrame(['Q'] * 2), ignore_index=True)
out2 = df5.append(['Q'] * 2, ignore_index=True)
assert out1.equals(out2) # no error, i.e. these are equal
如果您仍然感到困惑,请尝试打印从单个列表构造的数据框:
print(pd.DataFrame(['Q'] * 2))
0
0 Q
1 Q
由于未指定任何列名,因此有一个标记为的列0。当附加到具有不同列的数据框时,您必然会在结果中看到一个附加列。
添加回答
举报
0/150
提交
取消