使用pandas将值从一列替换为另一列?

问题描述 投票:1回答:1

我有一个数据帧:

       subtracted      Subs        hrs  
0      281871.120   450878.77      0.00    
1      221343.432   229535.34      0.00     
2      197454.408    32080.93      0.00    
3      41934.000    -9853.07     32080.93

我想从减去列到hrs列替换正值(相对于子列)。

预期产量:

       subtracted      Subs        hrs  
0      281871.120   450878.77      281871.120   
1      221343.432   229535.34      221343.432    
2      197454.408    32080.93      197454.408    
3      41934.000    -9853.07       32080.93

任何人都可以建议我这样做的正确方法吗?

python pandas dataframe
1个回答
1
投票

您可以使用locwherenumpy.where替换为正值创建的掩码:

m = df['Subs'] > 0
df.loc[m, 'hrs'] = df['subtracted']

df['hrs'] = df['subtracted'].where(m, df['hrs'])

df['hrs'] = np.where(m, df['subtracted'], df['hrs'])

print (df)
   subtracted       Subs         hrs
0  281871.120  450878.77  281871.120
1  221343.432  229535.34  221343.432
2  197454.408   32080.93  197454.408
3   41934.000   -9853.07   32080.930

对于由负值创建的掩码,可以使用mask

m = df['Subs'] < 0
df['hrs'] = np.where(m, df['hrs'], df['subtracted'])

df['hrs'] = df['subtracted'].mask(m, df['hrs'])
© www.soinside.com 2019 - 2024. All rights reserved.