簡體   English   中英

Pandas 系列到 dataframe 行使用 loc 但缺少某些列

[英]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_firstcombine

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM