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

如何使用pandas group by仅对后续/不间断元素进行分组?,pandas,pandas-groupby,Pandas,Pandas Groupby,如果我在下面的例子中执行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。我想得

如果我在下面的例子中执行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等的总和。

我最终发现解决方案是:

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

希望这对其他人有所帮助。

我终于找到了解决方案:

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() 
希望这对其他人有帮助