在向数据集添加新行时遇到问题。
这里是示例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的问题?
答案 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
和新值a3
和b3
放在最后一列即可。
>>> 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的行的新值添加到A
和B
的行中,此行的新值将变成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