2016-12-29 260 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