[英]How to replace nan values of a column based on certain values of other column
[英]How to replace values in column when other column is not nan or replace with other?
我是 Pandas 的新手,我正在尋找可以用其他列替換一列值的解決方案。 例如:
如果 colE 中的值為 Nan,則將 col A 的值替換為 Col E 中的值,如果不是 nan,則替換為 ColD 的值,否則替換為 ColC 的值。 有人可以幫忙嗎?
您可以為此使用.fillna
,這基本上意味着“如果存在則使用原始值,否則使用填充值”。
因此,您的示例應如下所示:
df_merged = df.assign(A=df['A'].fillna(df['E']).fillna(df['D']).fillna(df['C'])
你所描述的看起來很像bfill
:
df = pd.DataFrame({'A': [1, None, None, None, None],
'B': [2, 3, None, None, None],
'C': [4, 5, 6, 7, None],
'D': [8, 9, 10, None, None],
'E': [11, 12, None, None, None]
})
# A B C D E
# 0 2.0 2.0 4.0 8.0 11.0
# 1 3.0 3.0 5.0 9.0 12.0
# 2 6.0 NaN 6.0 10.0 NaN
# 3 7.0 NaN 7.0 NaN NaN
# 4 NaN NaN NaN NaN NaN
order = ['A', 'E', 'D', 'C']
df['A'] = df[order].bfill(axis=1)['A']
# A B C D E
# 0 1.0 2.0 4.0 8.0 11.0
# 1 12.0 3.0 5.0 9.0 12.0
# 2 10.0 NaN 6.0 10.0 NaN
# 3 7.0 NaN 7.0 NaN NaN
# 4 NaN NaN NaN NaN NaN
或者如果您真的想替換 A 的所有值(甚至是非 NaN):
order = ['E', 'D', 'C']
df['A'] = df[order].bfill(axis=1)['E']
# A B C D E
# 0 11.0 2.0 4.0 8.0 11.0
# 1 12.0 3.0 5.0 9.0 12.0
# 2 10.0 NaN 6.0 10.0 NaN
# 3 7.0 NaN 7.0 NaN NaN
# 4 NaN NaN NaN NaN NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.