选择多个键具有值的pandas groupby数据帧的子集

2024-05-13 12:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个值的数据框,如下所示:

    mode   journey  stage
0    BUS   1        1
1    RTS   1        2
2    BUS   2        1
3    RTS   3        1
4    BUS   3        2
5    BUS   4        1

我做了一个分组[旅行,'模式],得到了这个:

g=df.groupby(['journey','mode'])  
g.size()

journey  mode
1        BUS    1
         RTS    1
2        BUS    1
3        RTS    1
         BUS    1
4        BUS    1

我想确定涉及总线和RTS的行程,因此在本例中,结果应该返回行程1和3。 我能知道怎么做吗? 谢谢。


Tags: 数据dfsizemode模式stagerts总线
1条回答
网友
1楼 · 发布于 2024-05-13 12:21:48

您可以单独按行程分组,然后检查每个组是否包含多个阶段:

>>> df.groupby('journey')['mode'].apply(lambda g: len(g)>1)
journey
1           True
2          False
3           True
4          False
dtype: bool

如果您的数据包含其他模式,并且您特别需要检查涉及“总线”和“RTS”的模式,则可以执行更明确的检查:

>>> d.groupby('journey')['mode'].apply(lambda g: 'BUS' in g.values and 'RTS' in g.values)
journey
1           True
2          False
3           True
4          False
dtype: bool

不过,最基本的想法是,如果你想找到“包含某某的旅程”,你应该只按旅程分组,然后计算每组是否符合某某条件。

相关问题 更多 >