我有一个定义如下的数据框:
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)
我确定我在这里遗漏了一些琐碎的东西,但是似乎无法弄清我遗漏了什么! 谢谢!