我在这里找到了一条线:
Appending row to pandas df adds 0 column
但我还是不明白我做错了什么。在
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列?我的初始数据框不是空的。在
pandas append states的帮助页面: “将其他行追加到此帧的末尾,返回一个新对象。不在此框架中的列将作为新列添加。“
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.append.html
在您的例子中,您没有提供任何列名,因此创建了新的列名。在
有很多方法可以附加新行。单向:
您正试图将列表
['Q', 'Q']
追加到一个有3列的数据帧中。这是模棱两可的。在由于一点也不清楚,Pandas决定将
['Q', 'Q']
传递给pd.DataFrame
构造函数,然后附加:如果您仍然感到困惑,请尝试打印从单个列表构造的数据帧:
^{pr2}$由于没有指定列名,因此有一个列标记为
0
。当用不同的列附加到一个dataframe时,您必须在结果中看到一个额外的列。在相关问题 更多 >
编程相关推荐