python - 如何根据相邻元素之间的差异将列表拆分为列表列表?

标签 python pandas numpy pandas-groupby

例如,如果我有

MAX_ALLOWED_DIFF = 3
nums=[1, 2, 4, 10, 13, 2, 5, 5, 5]

输出应该是

groups = [[1, 2, 4], [10, 13], [2, 5, 5, 5]]

上下文:我有一个 pandas.Series object nums 并且我使用了

nums = nums.diff().gt(DETECTION_MAX_DIFF_NS).cumsum()).apply(list).tolist()

以相同的方式进行子采样,但我注意到我的 Series nums 中有很多重复项,在我使用 .unique() 方法后我不不再有 Series 对象,我有 numpy.ndarray (1D) 代替。

我相信我可能会使用像 pandas.Series(nums.unique) 这样的东西,但我不喜欢这种 hack。

最佳答案

所以我们使用drop_duplicates,让nums留在pd.Series

nums=nums.drop_duplicates()
nums.groupby(nums.diff().abs().gt(MAX_ALLOWED_DIFF).cumsum()).apply(list).tolist()
Out[447]: [[1, 2, 4], [10, 13], [5]]

关于python - 如何根据相邻元素之间的差异将列表拆分为列表列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55399048/

相关文章:

python - 从列表中返回随机子子列表及其索引

python - 如何在 Django 中保持 SECRET_KEY 的 secret ?

python - 逐行比较两个 numpy 数组 ValueError

numpy - 什么 kotlin 包提供了 numpy 功能?

python - Python : Unknown Invalid Syntax Error

python - 如何在 matplotlib 表上显示数据帧索引名称?

python - 组合 DataFrame 时保留索引和列顺序

python - 使用 2 个复合索引对 Pandas DataFrame 进行切片

python - 将 timedelta 的时间转换/使用到日期时间

python - 使用卷积窗口(python)隔离沿海网格