sku r1 r2
0 1 2 NaN
1 4 5 NaN
2 7 8 9.0
如果我想在r2上更改r1列的值,我的意思是如果r2不是Nan,那么使用r2的值替换r1'值,否则保持r1没有变化
结果将是:
sku r1 r2
0 1 2 NaN
1 4 5 NaN
2 7 9.0 9.0
所以你看,在这个例子中,在第三种情况下将8改为9.0。 我是大熊猫的新学习者,我花了很多时间为此找到解决方案。
感谢您的帮助。
答案 0 :(得分:3)
df['r1'] = df['r1'].mask(df['r2'].notnull(), df['r2'])
print (df)
sku r1 r2
0 1 2.0 NaN
1 4 5.0 NaN
2 7 9.0 9.0
或loc
:
df.loc[df['r2'].notnull(), 'r1'] = df['r2']
print (df)
sku r1 r2
0 1 2.0 NaN
1 4 5.0 NaN
2 7 9.0 9.0
答案 1 :(得分:1)
使用np.where
:
df['r1'] = np.where(df['r2'].notnull(),df['r2'],df['r1'])
df
输出:
sku r1 r2
0 1 2.0 NaN
1 4 5.0 NaN
2 7 9.0 9.0