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

我仍然不明白我做错了什么。


df4 = pd.DataFrame({'Q':['chair', 'desk', 'monitor', 'chair'], 'R':['red', 'blue', 'yellow', 'purple'], 'S': ['english', 'german', 'spanish', 'english']})


df4


         Q       R        S

0    chair     red  english

1     desk    blue   german

2  monitor  yellow  spanish

3    chair  purple  english



>> df5 = df4


>>> df5 = df5.append(['Q'] * 2, ignore_index=True)


>>> df5


         Q       R        S    0

0    chair     red  english  NaN

1     desk    blue   german  NaN

2  monitor  yellow  spanish  NaN

3    chair  purple  english  NaN

4      NaN     NaN      NaN    Q

5      NaN     NaN      NaN    Q

>>> 

在我的情况下,为什么要添加0列?我的初始DF不为空。


心有法竹
浏览 157回答 2
2回答

动漫人物

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)

ITMISS

您试图将列表追加['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))   00  Q1  Q由于未指定任何列名,因此有一个标记为的列0。当附加到具有不同列的数据框时,您必然会在结果中看到一个附加列。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java