无法弄清楚如何按单个列中的连续组对数据框进行子集

时间:2019-11-15 16:25:11

标签: python dataframe subset pandas-groupby iterable

我有一个定义如下的数据框:

index= [1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,1,2,3]
events = [10,20,30,40,50,60,70,80,90,100,120,130,140,150,160,12,13,14]
df = pd.DataFrame()
df['index'] = index
df['Events'] = events

我想做的是在索引中找到连续的组,然后计算每个组中的事件。我可以使用mit.consecutive_groups找到这些组,即:

import more_itertools as mit
test_groups = []
for group in mit.consecutive_groups(df['index']):
    print(list(group))

 >[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
 [12, 13, 14, 15, 16]
 [1, 2, 3]

我想做的是找回“事件”的类似结构,即数据帧中的另一列,这样我就有了

[10,20,30,40,50,60,70,80,90,100]
[120,130,140,150,160]
[12,13,14]

如果索引列中没有重复,这将适用于以下代码

cum_sums=[]
for group in mit.consecutive_groups(df['index']):
    total=0
    for num in group:
        x = int(df[df['index']==num]['Events'])
        total = total+x
    cum_sums.append(total)

我确定我在这里遗漏了一些琐碎的东西,但是似乎无法弄清我遗漏了什么! 谢谢!

0 个答案:

没有答案