我想向数据帧的一行添加一个系列,但并非每一列都在数据帧中。如何更改代码:
A[0]
这样它就会自动将缺失的列添加到数据框中,我得到了这个
df = pd.DataFrame(index=[0,1,2], columns = ['A', 'B'])
series = pd.Series(data=[5,3], index=['B', 'C'])
df.loc[0] = series
print(df)
Output:
A B
0 NaN 5
1 NaN NaN
2 NaN NaN
到目前为止,我尝试过这个,但得到了一个 keyError:
Output:
A B C
0 NaN 5 3
1 NaN NaN NaN
2 NaN NaN NaN
答案 0 :(得分:1)
不是很优雅,但你可以在 for 循环中做到:
for c in series.index:
df.loc[0, c] = series[c]
df
A B C
0 NaN 5 3.0
1 NaN NaN NaN
2 NaN NaN NaN
另一种方法是在分配给系列之前向 df 添加空列:
df.reindex(columns=df.columns.tolist() + [c for c in series.index if c not in df.columns])
df.loc[0, series.index] = series
df
A B C
0 NaN 5 3.0
1 NaN NaN NaN
2 NaN NaN NaN
答案 1 :(得分:0)
您可以将系列转换为 DataFrame 并使用 combine_first
或 combine
:
df.combine_first(series.to_frame(name=0).T) # to fill the second row set 'name' to 1
输出:
A B C
0 NaN 5.0 3.0
1 NaN NaN NaN
2 NaN NaN NaN