如何使用pandas分组方式仅对后续/不间断的元素进行分组?

时间:2019-05-14 09:26:38

标签: pandas pandas-groupby

如果我在下面的示例中执行分组,我将获得所有带有'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等的总和。

1 个答案:

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

希望这对其他人有帮助。