python - 选择 pandas groupby 数据框的子集,其中多个键具有值

标签 python group-by pandas

我有一个看起来像这样的值数据框:

    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

我做了一个 groupby ['journey','mode'] 并获得了这个:

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

我想确定同时涉及 BUS 和 RTS 的旅程,因此在这种情况下,结果应该返回旅程 1 和 3。 我可以知道如何做到这一点吗? 谢谢。

最佳答案

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

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

如果您的数据包含其他模式并且您特别需要检查涉及“BUS”和“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

不过,基本思想是,如果你想找到“涉及某某的旅程”,你应该只按旅程分组,然后为每个组计算它是否符合某某条件.

关于python - 选择 pandas groupby 数据框的子集,其中多个键具有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21375206/

相关文章:

Python 多个 elif 替代品

python - 如何在 Pandas.merge 中删除 '_merge' 列

python - matplotlib 中的元组索引超出范围

python - GroupBy 语句不像字符串那样分组

python - 创建单个 pandas.core.frame.Pandas 对象

python - Pandas 重命名索引

python - 比较 numpy 结构化数组

python - Pandas 分为两个多索引系列

sql - 将后续日期分组到垃圾箱中

python - 使用 statsmodel 计算 Pandas 时间序列中单个比例的 95% 置信区间