[英]Fill missing values of pandas based on values of other columns
我有以下數據框:
A B C D
0 NaN 2.0 NaN 0
1 3.0 4.0 NaN 1
2 NaN NaN NaN 5
3 NaN 3.0 NaN 4
現在,我想用B或D中的值填充A的空值。即,如果B中的值為Null,則檢查D。所以結果數據幀看起來像這樣。
A B C D
0 2.0 2.0 NaN 0
1 3.0 4.0 NaN 1
2 5 NaN NaN 5
3 3.0 3.0 NaN 4
我可以使用以下代碼執行此操作:
df['A'] = df['A'].fillna(df['B'])
df['A'] = df['A'].fillna(df['D'])
但是我想一行完成,該怎么做?
您可以簡單地鏈接兩個.fillna()
:
df['A'] = df.A.fillna(df.B).fillna(df.D)
A B C D
0 2.0 2.0 NaN 0
1 3.0 4.0 NaN 1
2 5.0 NaN NaN 5
3 3.0 3.0 NaN 4
或將fillna
與combine_first
fillna
使用:
df['A'] = df.A.fillna(df.B.combine_first(df.D))
如果因為許多列更好而不需要鏈,則使用按位置填充第一列來回填缺失值:
df['A'] = df['A'].fillna(df[['B','D']].bfill(axis=1).iloc[:, 0])
print (df)
A B C D
0 2.0 2.0 NaN 0
1 3.0 4.0 NaN 1
2 5.0 NaN NaN 5
3 3.0 3.0 NaN 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.