分组并计算pandas / python中的条件值

时间:2019-10-17 06:27:07

标签: python pandas group-by count conditional-statements

请,我需要在我的python / pandas代码中计算两个带有条件值的独立列。 请参阅使用lambda的示例:

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()

此代码很慢。 还有没有lambda的熊猫和分组方式吗?

谢谢

1 个答案:

答案 0 :(得分:0)

是的,有可能。首先使用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())