首页 > 解决方案 > 从序列号运行列表中提取连续数字及其对应值

问题描述

我想在元组列表中对连续数字的多个重复进行分组。

import more_itertools as mit    
df=pd.DataFrame({'a': [0,1,2,0,1,2,3,4], 'b':[2,10,24,56,90,1,3,6]})
for group in mit.consecutive _groups(df['a'])
print(list(group)

我得到的输出为

[0,1,2],[0,1,2,3,4,5]

我想要的输出是

[(0,2),(1,10),(2,24)],
[(0,56),(1,90),(2,1),(3,3),(4,6)

任何帮助,将不胜感激!

标签: python-3.x

解决方案


您可以压缩两个子列表并将ordering参数与 lambda 函数一起使用,该函数返回压缩序列中元组的第一项:

for group in mit.consecutive_groups(zip(df['a'], df['b']), ordering=lambda t: t[0]):
    print(list(group))

这输出:

[(0, 2), (1, 10), (2, 24)]
[(0, 56), (1, 90), (2, 1), (3, 3), (4, 6)]

推荐阅读