Группировка и подсчет условных значений в пандах / питонах - PullRequest
1 голос
/ 17 октября 2019

Пожалуйста, мне нужно сосчитать два независимых столбца с условными значениями в моем коде python / pandas. Посмотрите пример с использованием лямбды:

self._df = self._df.groupby(['id', 'field1', 'field2'])['fieldX', 'fieldY'].apply(lambda x: pd.Series([(x['fieldX'] == 1).sum(), (x['fieldY'] == 2).sum()])).reset_index()

Этот код медленный. Есть ли другой способ с пандами и группой без лямбды?

Спасибо

1 Ответ

0 голосов
/ 17 октября 2019

Да, это возможно. Сначала используйте DataFrame.assign для сравнения обоих столбцов, конвертирования в целые числа и назначения столбцов обратно в исходное, поэтому последним нужно только агрегировать sum:

self._df = (self._df.assign(fieldX = (self._df['fieldX'] == 1).astype(int),
                            fieldY = (self._df['fieldY'] == 2).astype(int))
                    .groupby(['id', 'field1', 'field2'])['fieldX', 'fieldY']
                    .sum()
                    .reset_index())
...