给出一个排序后的 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]]
答案 0 :(得分:2)
您可以使用diff
和cumsum
标记组,然后使用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]]