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

时间:2017-07-14 14:05:56

标签: python pandas dataframe data-analysis

您好我有以下数据框。

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

我从循环中获取行值 行,      打印(数据)

    Devices     months
1  Powerbank  Feb month

当我将此数据行添加到我的df3时,我收到错误。

  df3.loc[len(df3)]=data

  ValueError: cannot set a row with mismatched columns

4 个答案:

答案 0 :(得分:9)

使用

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

或@Wen建议使用

df3 = df3.append(data)

答案 1 :(得分:8)

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

  

值得注意的是,concat(因此追加)会生成数据的完整副本,并且不断重用此函数会产生重大的性能损失。如果需要对多个数据集使用该操作,请使用列表推导。

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

import pandas as pd

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

df3.loc[len(df3)] = new_entry

答案 2 :(得分:0)

如果有人希望添加字典格式的新行,则下面的内容会有所帮助。

  • 现有DataFrame
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]:

希望有帮助。

答案 3 :(得分: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