Pandas - 如何识别列中两个值以特定顺序出现的数据组?

馅饼手肉汁

我有一个带有 ID、时间戳和值的 Pandas 数据框。每个 ID 有多行,按 ID 和时间戳升序排列。我需要确定两个值 - 'A' 和 'B' - 出现在每个 ID 的任意两行中的 ID,按该顺序。例如:-

ID       Timestamp      Value

001      00:01          A
001      00:02          B
001      00:03          B

002      00:01          B
002      00:02          A
002      00:03          B

003      00:01          B
003      00:02          A
003      00:03          A

上面,ID 001 和 002 符合条件,因为 A 在 ID 组中的某处位于 B 之前。ID 003 不符合条件,因为 A 永远不会在 B 之前。

每组 ID 将至少包含一个“A”和一个“B”,所以我知道如果“A”在前,那么它就符合条件。但是,如果“B”在前,则没有此类保证。

我曾尝试使用 idxmin 来定位每个值的第一次出现并比较位置,但我无法让它与 groupby 一起工作。我什至很难考虑使用循环来规避我的缺点,但如果有必要,我可以这样做 - 但是在我看来,必须有一种适当的 pythonic 方法来解决这个问题,我只是不知道它是什么。

非常感谢任何帮助或建议。谢谢!

科拉连
>>> df.sort_values("Timestamp") \           # mandatory for shift
      .groupby("ID")["Value"] \             # group by 'ID'
      .apply(lambda x: any(x > x.shift()))  # search B > A

ID
001     True
002     True
003    False
Name: Value, dtype: bool

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python Pandas:如何相互减去数据帧的特定列中的两个非连续行中的值

将两个值从特定列中的数组插入到 Pandas 数据框中

如何基于Pandas数据框中其他多个列的值添加两个新列?

组合来自两个不同数据帧的两列以删除 Pandas 中的缺失值

将两个 Pandas 数据框与列值合并

Pandas DataFrame:在两个特定的列中获取具有相同值对的行

如何检查列的任何值是否在Pandas中的范围内(两个值之间)?

合并两个不同列中具有匹配值的数据框-Pandas

带有两个非重叠列中的值的pandas数据透视表

获取密钥:pandas数据帧的两个连续列中的值对字典

如何比较两个DataFrame之间的Pandas列的值

根据列中的值匹配两个 Pandas DataFrame

如何在将两个列中的公共列值匹配的同时将列从pandas数据框复制到另一个?

如何比较循环中特定位置的两个值,并在 Pandas Dataframe 中的值范围内附加数据

如何在列中的匹配值上合并两个Pandas DataFrame

如何使用 Pandas 在列中的共享值上加入这两个 DataFrame?

如何在 Pandas 中减去两个 DataFrame 列

如何在 Python / Pandas 中组合两个指标列,其中逻辑取决于行的顺序

如何获取出现在python pandas数据框中的两列的唯一组合的数量

在pandas数据框中切片两个单独的列组

Python Pandas- Groupby列可在Pandas数据框列中获得两个峰值

如何一次将两列与 python (pandas) 中的两个不同数据框进行比较?

Pandas 中两个特定日期时间范围之间出现的数字

在Python(Pandas / Numpy)中。如何创建两个独立系列的最大值/最小值的列?

仅当行和列值相同时才添加两个pandas数据框值

如何基于另一列的两个连续值在pandas的新列中添加标签?

如何根据两个 Pandas 数据框参数的当前值控制在函数中应用哪个公式?

如何将两个值从嵌套数据示例中提取到pandas Dataframe中?

如何合并两个Pandas DataFrames并汇总一个特定的列