python - 将非连续值分组到列表中

标签 python python-3.x pandas pandas-groupby

我正在尝试按此数据集进行分组

    col1    col2
0   A   1
1   B   1
2   C   1
3   D   3
4   E   3
5   F   2
6   G   2
7   H   1
8   I   1
9   j   2
10  K   2

进入此

1 : [A, B, C]
3: [D, E]
2: [ F; G]
1: [ H, I]
2: [ J,K]

因此它必须捕获元素外观的差异,而不是一次将所有元素分组。

到目前为止,我能够执行正常的 groupby,df.groupby("col2")["col1"].apply(list) 但它不正确。

最佳答案

您需要通过比较不等于累积和的移位值来区分连续值,最后删除MultiIndex的第二级:

s = (df.groupby(["col2", df["col2"].ne(df["col2"].shift()).cumsum()])["col1"]
       .agg(list)
       .reset_index(level=1, drop=True))

关于python - 将非连续值分组到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65933834/

相关文章:

python - Matplotlib 动画多个大圆圈并从 pandas df 更新

python - 在 Pandas 数据框上绘制堆叠条形图

python - 使补丁更大,用作 matplotlib 中的图例

python - 查找列表中的值是否大于其下方的项目

python - Flask:Config.py - 如何将开发与生产分开?

python - 如何进行二维切片?

python - 按两列过滤 pandas 数据框,其中一列是列表

python - 找不到满足要求的版本 tkinter python 3.7.2 windows 10

Python:为什么我不能在类里面使用 `super`?

python - 为什么我的代码无法从 txt 文件中读取 3 位数字?