这是我的数据框:
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。我怎么能这样做?
谢谢,
答案 0 :(得分:7)
在选择满足条件的子集后使用.loc
,然后将 Y 中的相应行与-1逐步相乘以查看效果:
df.loc[df['U'] == 'T', 'Y'] *= -1
df
注意:符号*=
将变量与值相乘,从而使结果成为变量。
答案 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