[英]Copy row value to adjacent column based on value in Pandas DataFrame
我有一个带有两列A和B的pandas DataFrame,其中包含数值或NaN。 如果一列中出现数值,则另一列中的对应单元格将始终为NaN,例如:
A B
0 123 NaN
1 456 NaN
2 NaN 789
我想复制(或移动)A列中的所有非NaN值以覆盖B列中的相应NaN,例如:
A B
0 123 123
1 456 456
2 NaN 789
基于对类似问题的答复 ,我提出了:
mask = (df['A'] != np.nan)&(df['B'] == np.nan)
df['B'][mask] = df['A'][mask]
但这不会导致任何变化。 谁能解释我要去哪里错了?
您可以使用combine_first
或fillna
:
df.B = df.B.combine_first(df.A)
print (df)
A B
0 123.0 123.0
1 456.0 456.0
2 NaN 789.0
要么:
df.B = df.B.fillna(df.A)
print (df)
A B
0 123.0 123.0
1 456.0 456.0
2 NaN 789.0
ANF如果没有NaN
值在B
更换投后int
:
df.B = df.B.fillna(df.A).astype(int)
print (df)
A B
0 123.0 123
1 456.0 456
2 NaN 789
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.