[英]Pandas series to row of dataframe using loc but some columns are missing
我想在 dataframe 的一行中添加一個系列,但並非每一列都在 dataframe 中。 如何更改代碼:
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
這樣它會自動將缺少的列添加到 dataframe 中,我得到了這個
Output:
A B C
0 NaN 5 3
1 NaN NaN NaN
2 NaN NaN NaN
到目前為止,我嘗試了這個但得到了一個 keyError:
df.loc[0, series.index] = series
Output:
KeyError: "['C'] not in index"
不是很優雅,但你可以在 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
另一種方法是在分配給系列之前將 null 列添加到 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
您可以將您的系列轉換為 DataFrame 並使用combine_first
或combine
:
df.combine_first(series.to_frame(name=0).T) # to fill the second row set 'name' to 1
Output:
A B C
0 NaN 5.0 3.0
1 NaN NaN NaN
2 NaN NaN NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.