在熊猫面板中根据其各自的值分组ID

时间:2018-10-11 11:09:40

标签: python python-3.x pandas pandas-groupby

在我的熊猫面板中,我有两列,“ id”和“ amount”。同样的ID,也有多个交易。 “金额”列中可以有正值和负值。现在,我想对所有ID为负的所有ID进行分组并计数。我该如何实现?

1 个答案:

答案 0 :(得分:0)

通过比较lt<)和合并sum来创建布尔掩码,True的值类似于1 s的过程:

df = pd.DataFrame({
    'id': ['a','a','a','a','b','b','b','c','c'],
    'amount': [-4,-5,6,7,1,-2,3,4,8]
})
print (df)
  id  amount
0  a      -4
1  a      -5
2  a       6
3  a       7
4  b       1
5  b      -2
6  b       3
7  c       4
8  c       8

df1 = df['amount'].lt(0).groupby(df['id']).sum().astype(int).reset_index(name='count')

或通过id列创建索引,并仅按sum(索引)使用level=0

df1 = df.set_index('id')['amount'].lt(0).sum(level=0).astype(int).reset_index(name='count')

print (df1)
  id  count
0  a      2
1  b      1
2  c      0