Python 根据数据帧中的条件删除组-groupby
这是我的数据帧:Python 根据数据帧中的条件删除组-groupby,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,这是我的数据帧: df = pd.DataFrame({'sym': list('aaaaaabb'), 'order': [0, 0, 1, 1, 0, 1, 0, 1], 'key': [2, 2, 2, 2, 3, 3, 4, 4], 'vol': [1000, 1000, 500, 500, 100, 100, 200, 200]}) 我在其中添加了另一列: df['vol_cumsum'] = df.groupby(['sym', 'key',
df = pd.DataFrame({'sym': list('aaaaaabb'), 'order': [0, 0, 1, 1, 0, 1, 0, 1], 'key': [2, 2, 2, 2, 3, 3, 4, 4],
'vol': [1000, 1000, 500, 500, 100, 100, 200, 200]})
我在其中添加了另一列:
df['vol_cumsum'] = df.groupby(['sym', 'key', 'order']).vol.cumsum()
让我们用这样的方式来定义问题,而不是用文字。选中此项:
df.groupby(['sym', 'key', 'order']).vol_cumsum.last()
现在,根据上面的groupby,我想省略它们的vol_cumsum不匹配的组。在这种情况下,我想从df中省略第一个组。
我想要的df如下所示:
4 3 0 a 100 100
5 3 1 a 100 100
6 4 0 b 200 200
7 4 1 b 200 200
用于与原始DaatFrame大小相同的系列,然后通过以下方式创建nw列:
df['vol_cumsum'] = df.groupby(['sym', 'key', 'order']).vol.cumsum()
s = df.groupby(['sym', 'key', 'order']).vol_cumsum.transform('last')
mask = df.assign(new=df['vol_cumsum'].eq(s)).groupby(['sym', 'key', 'order'])['new'].transform('all')
df = df[mask]
print (df)
sym order key vol vol_cumsum
4 a 0 3 100 100
5 a 1 3 100 100
6 b 0 4 200 200
7 b 1 4 200 200