【发布时间】:2021-11-15 21:47:18
【问题描述】:
我有下面的数据框:
import pandas as pd
d = {'id': [1,1,2,2,3,3,3,4,4],
'amount':[2,3,5,-5,2,3,-5,3,4]}
d = pd.DataFrame(d)
d
id amount
0 1 2
1 1 3
2 2 5
3 2 -5
4 2 4
5 2 6
6 3 2
7 3 3
8 3 -5
9 4 3
10 4 4
11 4 100
12 4 -100
所以我想要做的是将每个 id 的正值与负值匹配,然后我这样做:
d[d.groupby(['id'])['amount'].transform('sum').eq(0)
这给了我这个输出:
id amount
2 2 5
3 2 -5
4 3 2
5 3 3
6 3 -5
如您所见,我的代码不仅可以匹配我想要的行对。例如,对于 id 3,它在我设置的条件下匹配三行。我怎样才能让它只匹配成对的行并获得所需的输出如下:
id amount
2 2 5
3 2 -5
11 4 100
12 4 -100
【问题讨论】:
标签: python python-3.x pandas dataframe dictionary