идентификаторы группы в соответствии с их значением на панели панд

1

В моей панели panda у меня есть две колонки: "id" и "amount". Для одного и того же идентификатора существует несколько транзакций. В "сумме" -column могут быть положительные и отрицательные значения. Теперь я хочу сгруппировать все id, где сумма отрицательная, и подсчитать их. Как я могу это достичь?

  • 1
    Возможный дубликат группы панд и сумма
Теги:
pandas
python-3.x
pandas-groupby

1 ответ

0
Лучший ответ

Создайте булевскую маску с помощью сравнения lt (<) и суммарной sum True значениями являются процессы, такие как 1 с:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню