【问题标题】:How can I find sequences of rows based on two columns?如何根据两列查找行序列?
【发布时间】:2022-01-18 18:36:38
【问题描述】:

这是我的dataframe

我正在尝试找出最常见的lengthdelivery_type 序列。即每六个球。有什么方法可以查出每个序列发生了多少次?

编辑:我还想标记这些模式并创建一个名为ball_sequence

的列

edit2:我现在在length/type 列中合并了delivery_typelength。例如 ESSY 是 'Extra Short Slow Yorker'

我还创建了一个预期结果的小表格。序列必须在同一个over中出现,不能是6的任意随机序列:

【问题讨论】:

  • 你能展示一下这种情况下的预期输出吗?
  • @RafG 我将创建另一列结合了 'length 和 'delivery_type 的列,然后是一个显示我想要的输出的小表格。完成后会通知您。
  • @RafG 请看上面编辑过的问题

标签: python pandas dataframe sequence


【解决方案1】:

以下应该有效:

(df.groupby(["Event_name", "Batfast_id", "Session_no", "Overs"])["length/type"]
   .apply(lambda x: ",".join(x))  ## Creates sequences for each over
   .value_counts()                ## Returns counts of sequences
)

【讨论】:

  • 您好,感谢您的回答。不幸的是,这只是给出了一长串值。我在问题中附上了输出
  • 我做了一些改动。请立即检查。从您提供的数据帧 sn-p 中尚不完全清楚,但我假设可以使用数据帧中的“Event_name”、“Batfast_id”、“Session_no”和“Overs”列的组合来唯一标识每个结束。
  • 成功了,非常感谢!
  • 有没有办法提供一个只考虑完全覆盖的条件?目前它还在考虑只交付 2 或 3 个球的不完整的过度
  • 也许你可以尝试在使用apply方法后添加:.loc[lambda x: x.str.count(",") == 5]
猜你喜欢
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
相关资源
最近更新 更多