我发现最相似的问题是here,但没有正确的答案。你知道吗
基本上,我遇到了一个问题,我试图在数据帧上使用groupby来为公交线路生成唯一的id。问题是,我所拥有的数据有时(尽管很少)具有与groupby列相同的值,因此它们被认为是相同的总线,即使它们不是
我能想到的唯一其他方法是根据另一个名为“站点类型”的栏对公交车进行分组,其中有一个起始、中间和结束的指示器。我想使用groupby来创建基于此列的组,其中每个组从“type of stop”=Start开始,从“type of stop”=End结束。你知道吗
考虑以下数据:
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
一个想法是通过
np.select
分解,然后通过numba
使用自定义循环:结果:
在我看来,您应该而不是包含“blank”值,因为这将迫使您的序列成为
object
数据类型,对任何后续处理都没有效率。如上所述,您可以使用0
。你知道吗绩效基准
numba
比一只纯熊猫快约10倍方法:-你知道吗基准功能:
我有办法。你必须避免循环,并尝试使用滑动,切片和合并。你知道吗
这是我的第一个原型(应该重构)
结果:
相关问题 更多 >
编程相关推荐