大熊猫过滤并申请

时间:2017-04-26 20:51:46

标签: python pandas

您好我有以下数据框(df):

Group Value
  A     1
  A     2
  A     3
  B    -1
  B     2
  B     3

我想将所有B组转换为负值,如果它们还没有(即乘以-1)。

df[df['group'] == 'B', 'value'].apply(... if value less than 0 then -1*value)

请让我知道在熊猫框架中进行此操作的正确方法。谢谢

2 个答案:

答案 0 :(得分:4)

In [85]: df.loc[df.Group.eq('B') & df.Value.gt(0), 'Value'] *= -1

In [86]: df
Out[86]:
  Group  Value
0     A      1
1     A      2
2     A      3
3     B     -1
4     B     -2
5     B     -3

答案 1 :(得分:2)

使用masknp.sign

的另一种方式
df.assign(Value=df.Value.mask(df.Group == 'B', -np.sign(df.Value) * df.Value))

  Group  Value
0     A      1
1     A      2
2     A      3
3     B     -1
4     B     -2
5     B     -3