我有这个数据集,其中包含给定时间内问题发生情况的日志。我想标记每个状态,表明它在那段时间达到了什么水平。我用 pandas 在 python 上做这件事。
日期 | 田野 | 旧值 | 新价值 |
---|---|---|---|
2024-05-16 20:03:00 | 状态 | 发展 | 质量保证 |
2024-05-15 01:30:00 | 级别 | 3 | 2 |
2024-05-14 20:03:00 | 状态 | 工作进行中 | 发展 |
2024-05-12 20:03:00 | 状态 | 调查 | 工作进行中 |
2024-05-08 01:30:00 | 等级 | 4 | 3 |
2024-05-06 18:57:00 | 状态 | 磨砂膏 | 调查 |
2024-04-30 00:18:00 | 级别 | 不适用 | 4 |
这是我想要的输出:
日期 | 田野 | 旧值 | 新价值 | 已用等级 |
---|---|---|---|---|
2024-05-16 20:03:00 | 状态 | 发展 | 质量保证 | 2 |
2024-05-15 01:30:00 | 级别 | 3 | 2 | 2 |
2024-05-14 20:03:00 | 状态 | 工作进行中 | 发展 | 3 |
2024-05-12 20:03:00 | 状态 | 调查 | 工作进行中 | 3 |
2024-05-08 01:30:00 | 级别 | 4 | 3 | 3 |
2024-05-06 18:57:00 | 状态 | 磨砂膏 | 调查 | 4 |
2024-04-30 00:18:00 | 等级 | 不适用 | 4 | 4 |
where
字段为级别,然后 ffill
:
df['Level Spent'] = (df.sort_values(by='Date')['New Value']
.where(df['Field'].eq('Level')).ffill()
)
输出:
Date Field Old Value New Value Level Spent
0 2024-05-16 20:03:00 Status Development QA 2
1 2024-05-15 01:30:00 Level 3 2 2
2 2024-05-14 20:03:00 Status Work In Progress Development 3
3 2024-05-12 20:03:00 Status Investigate Work in Progress 3
4 2024-05-08 01:30:00 Level 4 3 3
5 2024-05-06 18:57:00 Status Scrub Investigate 4
6 2024-04-30 00:18:00 Level NaN 4 4