请,我需要在我的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的熊猫和分组方式吗?
谢谢
答案 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())