【发布时间】:2016-05-19 18:01:36
【问题描述】:
我有一个数据框,我想按两个参数(1)同一第一列中的连续编号和(2)第二列中的匹配值进行分组
数据框:
In [20]: import pandas as pd
In [21]: df1 = pd.DataFrame ({ "res": [30, 31, 35, 36], "ss": ["H", "H", "H", "E"], "AA": ["A", "B", "C", "D"]})
In [22]: df1
Out[22]:
res ss AA
0 30 H A
1 31 H B
2 35 H C
3 36 E D
期望的输出:
group 1: (30, H, A), (31, H, B)
group 2: (35, H, C)
group 3: (36, E, D)
第 1 组包括前 2 行,因为 30 和 31 是连续的,并且第二列匹配。 由于第 1 列中的 31 和 35 不连续,因此创建了第 2 组。 第 3 组已创建,因为 H 和 E 不匹配。
我正在尝试将 groupby 和 enumerate 一起使用,但我似乎无法将它们结合起来。
Identify groups of continuous numbers in a list
grouping rows in list in pandas groupby
感谢任何关于如何组合选择的提示
【问题讨论】:
-
我根本不明白你想要的输出。什么是“AB、C、D”,你如何从
df1得到它?请编辑您的问题,使其更具体。 -
@DSM 我编辑了我的问题。希望现在更清楚了。
标签: python pandas grouping enumerate