在pandas中向现有数据框添加新行时出现错误

13

我有以下数据框。

df3=pd.DataFrame(columns=["Devices","months"])

我正在从循环中获取行值 row, 打印数据

    Devices     months
1  Powerbank  Feb month

当我将这个数据行添加到我的df3中时,出现了错误。

  df3.loc[len(df3)]=data

ValueError: 无法使用不匹配的列设置行。

尝试使用 append - BENY
2
可能是向pandas DataFrame添加一行的重复问题。 - Santhosh Dhaipule Chandrakanth
4个回答

20
df3 = pd.concat([df3, data], axis=0)

或者按照 @Wen 的建议使用

df3 = df3.append(data)

1
axis=0 是默认值,可以省略。 - VMAtm
如果您不使用 ignore_index,那么可能会出现错误。df3 = df3.append(data, ignore_index=True) - asantz96

12

来自https://pandas.pydata.org/pandas-docs/stable/merging.html

需要注意的是,concat(以及因此也包括append)会完全复制数据,频繁重用此函数可能会导致显著的性能问题。如果您需要在多个数据集上使用该操作,请使用列表推导。

您应该像尝试做的那样使用loc,并使用字典,其中键是列名,值是要添加行的数据。

import pandas as pd

df3 = pd.DataFrame(columns=["Devices","months"])
new_entry = {'Devices': 'device1', 'months': 'month1'}

df3.loc[len(df3)] = new_entry

1
如何使用上述技巧将一个数据框添加到现有的数据框中? - Nathan

1
如果有人想要添加一个字典格式的新行,以下内容将会有所帮助。
  • 现有的数据框
In [6]: df
Out[6]: 
     Devices     months
0  Powerbank  Feb month

In [7]:
以下代码片段向现有DataFrame中添加了另一行。
In [7]: dictionary_row = {"Devices":"Laptop","months":"Mar month"}

In [8]: df = df.append(dictionary_row, ignore_index=True)

In [9]: df
Out[9]: 
     Devices     months
0  Powerbank  Feb month
1     Laptop  Mar month

In [10]:
希望能帮到你。

0
正如错误提示所示,插入到dataframe中的数据的列数必须与dataframe的列数相匹配。
>>> df3=pd.DataFrame(columns=["Devices","months"])
>>> df3.loc[len(df3)] = ['Powerbank','Feb']
>>> df3
     Devices months
0  Powerbank    Feb
>>> data = ['powerbank','feb']
>>> df3.loc[len(df3)] = data
>>> df3
     Devices months
0  Powerbank    Feb
1  powerbank    feb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接