2016-12-29 191 views
2

这里是我的数据框:熊猫据帧条件列的更新

   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,我想在同一行中与-1乘列Y的值。我怎样才能做到这一点?

感谢,

回答

5

利用.loc选择在满足条件,然后逐渐繁衍在相应的行Ÿ与-1看到效果的子集后:

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

enter image description here

注意:符号*=乘以变量和VA从而使结果成为变量。

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