我有以下表格。
| 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'没有定义。我也不知道这样做是否正确,所以如果你有任何提示,请告诉我。