идентификаторы группы в соответствии с их значением на панели панд - PullRequest
0 голосов
/ 11 октября 2018

В моей панели panda у меня есть два столбца, id и количество.Есть несколько транзакций для одного и того же идентификатора.В столбце «количество» могут быть положительные и отрицательные значения.Теперь я хочу сгруппировать все идентификаторы, где сумма является отрицательной и подсчитать их.Как мне этого добиться?

1 Ответ

0 голосов
/ 11 октября 2018

Создание логической маски путем сравнения по 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...