python pandas“无法设置列不匹配的行”错误

时间:2018-12-01 10:43:29

标签: python pandas dataframe

在向数据集添加新行时遇到问题。

这里是示例DataFrame

column_names = ['A','B','C']
items = [['a1','b1','c1'],['a2','b2']]
newDF = pd.DataFrame(items,columns=column_names)
print(newDF)

输出:

    A   B     C
0  a1  b1    c1
1  a2  b2  None

由于缺少c2,因此将其替换为None。很好,符合预期。

现在,如果我继续向此现有DataFrame添加类似的行,就像这样:

newDF.loc[len(newDF)] = ['a3','b3']

我收到错误“无法设置列不匹配的行”。

如何添加此额外的行,以便它能自动处理缺少None或NaN的c3的问题?

3 个答案:

答案 0 :(得分:1)

一个选项是var a=[["a","b","c"],["d","e","f"]]; var b=[["1","2","3"],["4","5","6"]]; console.log(a[0].splice(1,2,b[0])); its return ["a",["1","2","3"]] i need to archive ["a","1","2","3"] for a[0]

DataFrame.append

答案 1 :(得分:1)

您将新行指定为字典,并从中创建一个数据框。

new_entry = {'A': ['a3'], 'B': ['b3']}
new_entry_df=pd.DataFrame.from_dict(new_entry)

现在可以将其附加到原始数据框

newDF.append(new_entry_df)

    A   B     C
0  a1  b1    c1
1  a2  b2  None
0  a3  b3   NaN

答案 2 :(得分:0)

那是什么:

>>> print(newDF)
    A   B     C
0  a1  b1    c1
1  a2  b2  None
>>> newDF
    A   B     C
0  a1  b1    c1
1  a2  b2  None

只需将新索引2和新值a3b3放在最后一列即可。

>>> newDF.loc['2'] = ['a3','b3', np.nan]
>>> newDF
    A   B     C
0  a1  b1    c1
1  a2  b2  None
2  a3  b3   NaN

OR

>>> row = ['a3','b3', np.nan]
>>> newDF.loc['2'] = row
>>> newDF
    A   B     C
0  a1  b1    c1
1  a2  b2  None
2  a3  b3   NaN

另一种解决方法:将附加到Dataframe的行的新值添加到AB的行中,此行的新值将变成NaN

>>> row
['a3', 'b3']
>>> newDF.append(pd.DataFrame([row],index=['2'],columns=['A', 'B']))
    A   B     C
0  a1  b1    c1
1  a2  b2  None
2  a3  b3   NaN