【发布时间】:2019-04-10 22:47:58
【问题描述】:
我发现的最相似的问题是here,但没有正确答案。
基本上我有一个问题,我试图在数据帧上使用 groupby 来为公交路线生成唯一的 ID。问题是,有时(尽管很少)我拥有的数据对于我的 groupby 列具有相同的值,因此即使它们不是,它们也被视为同一总线。
我能想到的唯一另一种方法是根据另一个名为“停止类型”的列对巴士进行分组,其中有一个指示开始、中间和结束。我想使用 groupby 基于此列创建组,其中每个组从“停止类型”= 开始的位置开始,在“停止类型”= 结束的位置结束。
考虑以下数据:
df = pd.DataFrame({'Vehicle_ID': ['A']*18,
'Position': ['START', 'MID', 'MID', 'END', 'MID', 'START']*3)})
Cond Position
0 A START
1 A MID
2 A MID
3 A END
4 A MID
5 A START
6 A START
7 A MID
8 A MID
9 A END
10 A MID
11 A START
12 A START
13 A MID
14 A MID
15 A END
16 A MID
17 A START
我想出的将这些总线准确分组在一起的唯一方法是生成一个带有总线序列 ID 的附加列,但鉴于我正在处理大量数据,这不是一个非常有效的解决方案。如果可能的话,我希望能够管理我想要使用单个 groupby 执行的操作,以便生成以下输出
Cond Position Group
0 A START 1
1 A MID 1
2 A MID 1
3 A END 1
4 A MID
5 A START 2
6 A START 2
7 A MID 2
8 A MID 2
9 A END 2
10 A MID
11 A START 3
12 A START 3
13 A MID 3
14 A MID 3
15 A END 3
16 A MID
17 A START 4
【问题讨论】:
-
为什么
4 A MID没有组号?
标签: python python-3.x pandas dataframe pandas-groupby