【问题标题】:Choosing the earliest date per record when equal dates are present当存在相同的日期时,选择每条记录的最早日期
【发布时间】:2023-01-30 18:04:09
【问题描述】:

我有一个表,每条记录有多个日期。表格示例:

identifier date value
a 1985-01-01 ex1
a 1985-01-01 ex2
a 1985-01-03 ex3
b 1990-01-05 ex1
b 1990-05-10 ex4
c 1987-01-01 ex1
c 1987-01-01 ex3
d 1986-01-01 ex1
d 1986-01-01 ex3

我发现了如何使用以下方法提取组中的最早日期:

df2 = df.loc[df.groupby('identifier')['date'].idxmin()]

但是,当我有两个相等的日期时,由于列值按字母顺序排序,我最终总是选择第一个字母值。
我想找到一种方法来随机化这种行为,只要我有相同的日期,以便选择:

  • 第一个值第一次
  • 第二个值第二次
  • 第三个值(只要存在)第 3 次

并相应地重新启动

有没有办法将上面的公式与条件或随机化方法一起使用?我怎样才能做到这一点?

预期输出:

identifier date value
a 1985-01-01 ex1
b 1990-01-05 ex1
c 1987-01-01 ex3
d 1986-01-01 ex1

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以使用:

    df[df['date'].eq(df.groupby('identifier')['date'].transform('min'))].groupby('identifier').sample(n=1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多