product

问题描述 投票:0回答:1

我有以下表格。

| product | check | check1 | type | amount |
|---------|-------|--------|------|--------|
| A       | 1     | a      | c    | -10    |
| A       | 1     | a      | p    | 20     |
| B       | 2     | b      | c    | 20     |
| B       | 2     | b      | p    | 20     |
| C       | 3     | c      | c    | -10    |
| D       | 4     | d      | p    | 15     |
| D       | 4     | d      | c    | -15    |

我想把前三列相等的行的金额相加,并且在'类型'列中有一行包含'C',另一行包含'P',那么'类型'='C'的金额应该是负数,而当'类型'='P'时,金额应该是正数,否则它们不应该相加。如果它们相加,如果'金额'是负数,'类型'应该是'C',否则是'P'。

| product | check | check1 | type | amount |
|---------|-------|--------|------|--------|
| A       | 1     | a      | p    | 10     |
| B       | 2     | b      | c    | 20     |
| B       | 2     | b      | p    | 20     |
| C       | 3     | c      | c    | -10    |
| D       | 4     | d      | p    | 0      |

我已经尝试 group.by 前三列,然后应用lambda函数。

df = df.groupby(['product', 'check', 'check1']).apply(lambda x, y : x + y, x.loc[(x['type']=='c')], y.loc[(y['type']=='p')], 'amount')

这样就会出现一个 NameError,其中'x'没有定义。我也不知道这样做是否正确,所以如果你有任何提示,请告诉我。

python pandas sum rows
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.