Pandas数据帧条件列更新

时间:2016-12-29 07:24:47

标签: python pandas dataframe

这是我的数据框:

                ACC  Count  SumOneLotPNL  MinAVG  U   PerLotPNL   Y
AS                                                                 
30106EURTRY1  30106      1         34.84     5.0  A   34.840000   3
30106USDTRY0  30106     16      -3018.18  8190.0  T -261.623333   2
30106USDTRY1  30106      6       1804.28  2069.0  A  248.820000   6
30106WTIOIL0  30106     43      -8410.00  1160.0  T -331.410000  23
30106WTIOIL1  30106     80       6600.00  1045.8  A   80.124000  37

如果列U的值为T,我想在同一行中将列Y的值乘以-1。我怎么能这样做?

谢谢,

2 个答案:

答案 0 :(得分:7)

在选择满足条件的子集后使用.loc,然后将 Y 中的相应行与-1逐步相乘以查看效果:

df.loc[df['U'] == 'T', 'Y'] *= -1
df

enter image description here

注意:符号*=将变量与值相乘,从而使结果成为变量。

答案 1 :(得分:3)

创意解决方案

#       |<- -1 if 'T' else 1  ->|
df.Y *= df.U.ne('T').mul(2).sub(1)
df

                ACC  Count  SumOneLotPNL  MinAVG  U   PerLotPNL   Y
AS                                                                 
30106EURTRY1  30106      1         34.84     5.0  A   34.840000   3
30106USDTRY0  30106     16      -3018.18  8190.0  T -261.623333  -2
30106USDTRY1  30106      6       1804.28  2069.0  A  248.820000   6
30106WTIOIL0  30106     43      -8410.00  1160.0  T -331.410000 -23
30106WTIOIL1  30106     80       6600.00  1045.8  A   80.124000  37