为了账号安全,请及时绑定邮箱和手机立即绑定

将行附加到 Pandas DF 添加 0 列 - 澄清

将行附加到 Pandas DF 添加 0 列 - 澄清

心有法竹 2021-05-30 04:22:47
我仍然不明白我做错了什么。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 回答

?
动漫人物

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)


查看完整回答
反对 回复 2021-06-01
?
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。当附加到具有不同列的数据框时,您必然会在结果中看到一个附加列。


查看完整回答
反对 回复 2021-06-01
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信