繁体   English   中英

根据Pandas DataFrame中的值将行值复制到相邻列

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM