【发布时间】: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 |
【问题讨论】: