如果我在下面的示例中执行分组,我将获得所有带有'A'项的总和。我只想总结不间断的随后出现的“ A”。 groupby是否可以?还有另一种方法吗?
我已经通过使用一些自定义循环解决了这个问题,但这太慢了。
pandas as pd
foo = pd.DataFrame({'bar':['A','A','B','A','A','A','C'],'foobar': [1,2,3,4,5,6,7]})
foo.groupby('bar').sum()
现在A的总和的输出为18。我希望A1 = 3,B = 3,A2 = 15等的总和。
答案 0 :(得分:0)
我终于找到了解决方案:
foo = pd.DataFrame({'bar':['A','A','B','A','A','A','C'], 'foobar': [1,2,3,4,5,6,7]})
foo['group_index'] = (foo['bar'] != foo['bar'].shift()).cumsum()
foo.groupby(['bar', 'group_index']).sum()
希望这对其他人有帮助。