首页 > 解决方案 > 如何在Python中分组后减去行?

问题描述

我有一个dataframe,申请后groupby().sum,我得到了这个结果。

是)我有的

Market     Type      Amount                                   
A          Buy        46.56
B          Buy       100.00
           Sell      100.00
C          Buy       697.20
D          Buy       100.00 <--
           Sell       40.00 <--
...        ...        ...

我现在想要的

Market     Type      Amount                                   
A          Buy        46.56
C          Buy       697.20
D          Buy        60.00 <--
...        ...         ...

需要考虑的事项

我怎样才能达到这个结果?

标签: pythondataframe

解决方案


我猜这不是优化的方式,但你可以试试这个代码块;

idx = df[df["Type"] == 'Sell'].index
df.loc[idx, 'Amount'] = df.loc[idx, 'Amount'] * (-1) 

df = df.groupby(['Market'], as_index=False).agg({'Type': 'min', 'Amount': 'sum'})
df = df.loc[~((df['Amount'] == 0))] 

推荐阅读