[英]how to fill NaN values of Pandas column with values from another column
[英]How to fill nan values in a column if the value from another column matches
假設我有一個像這樣的 dataframe:
col1 col2 col3
0 data1 0 NaN
1 data1 0 NaN
2 data1 1 Done
3 data2 0 NaN
4 data2 1 To be done
5 data3 0 NaN
6 data3 1 Fail
如何替換 col3 中的 nan 值,例如: col1 中的 data1 在 col3 中有一行“完成”,我如何將此值傳遞給 col3 中包含 col1 中的 data1 的所有 NaN 行?
理想的 df 看起來像這樣:
col1 col2 col3
0 data1 0 Done
1 data1 0 Done
2 data1 1 Done
3 data2 0 To be done
4 data2 1 To be done
5 data3 0 Fail
6 data3 1 Fail
使用groupby
+ bfill
:
df['col3'] = df.groupby('col1')['col3'].bfill()
print(df)
# Output:
col1 col2 col3
0 data1 0 Done
1 data1 0 Done
2 data1 1 Done
3 data2 0 To be done
4 data2 1 To be done
5 data3 0 Fail
6 data3 1 Fail
一種方法是在 col1 上創建一個字典和 map:
d = dict(df.dropna()[['col1', 'col3']].values)
df['col3'] = df['col1'].map(d)
col1 | col2 | col3 | |
---|---|---|---|
0 | 數據1 | 0 | 完畢 |
1 | 數據1 | 0 | 完畢 |
2 | 數據1 | 1 | 完畢 |
3 | 數據2 | 0 | 待辦 |
4 | 數據2 | 1 | 待辦 |
5 | 數據3 | 0 | 失敗 |
6 | 數據3 | 1 | 失敗 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.