请在我的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的熊猫和分组方式吗?
谢谢
对的,这是可能的。首先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())
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句