我有一个数据框,我想通过两个参数进行分组(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包括前两行,因为30和31是连续的,第二列是匹配的。 创建组2是因为第1列中的31和35不连续。 创建组3是因为H和E不匹配。
我正在尝试使用groupby并一起枚举,但我似乎无法将它们组合在一起。
Identify groups of continuous numbers in a list
grouping rows in list in pandas groupby
我很欣赏有关如何组合选择的任何提示
答案 0 :(得分:0)
我对你的意思采取了一些自由。如果我理解正确,请告诉我。
import pandas as pd
df1 = pd.DataFrame ({"res": [30, 31, 35, 36],
"ss": ["H", "H", "H", "E"],
"AA": ["A", "C", "D", "B"]}) # I made 'F' a 'B'
df1
df1
看起来像:
AA res ss
0 A 30 H
1 C 31 H
2 D 35 H
3 B 36 E
我相信你只想sort
而不是groupby
。
print df1.sort_values(['AA', 'res'])
看起来像:
AA res ss
0 A 30 H
3 B 36 E
1 C 31 H
2 D 35 H
但是,部分问题没有意义。希望这很有用。