使用 loc 将 Pandas 系列转换为数据框行,但缺少某些列

时间:2021-02-28 12:20:00

标签: python pandas

我想向数据帧的一行添加一个系列,但并非每一列都在数据帧中。如何更改代码:

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

2 个答案:

答案 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_firstcombine

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