如何将已排序的pandas.Series分组?

时间:2019-03-27 01:36:48

标签: python pandas

给出一个排序后的 pandas.Series (或只是一个列表)对象,我想要创建组(例如列表或 pandas.Series ),以使相邻对象之间的差异组中的元素小于某个阈值,例如:

THRESHOLD = 2
sorted_list = [1, 2, 10, 15, 16, 17, 20, 21]
# ...
result = [[1, 2], [10], [15, 16, 17], [20, 21]]

2 个答案:

答案 0 :(得分:2)

您可以使用diffcumsum标记组,然后使用groupby

s = pd.Series(sorted_list)
s.groupby(s.diff().gt(THRESHOLD).cumsum()).apply(list).tolist()
# [[1, 2], [10], [15, 16, 17], [20, 21]]

答案 1 :(得分:1)

使用

s = pd.Series(sorted_list)

[y.tolist() for x , y in s.groupby(s.diff().gt(THRESHOLD).cumsum())]
Out[167]: [[1, 2], [10], [15, 16, 17], [20, 21]]