python - 在行,多个键上滚动 datediff
问题描述
我有一个看起来像这样的数据框:
部分 | 日期 |
---|---|
1 | 2021 年 9 月 1 日 |
1 | 2021 年 9 月 8 日 |
1 | 2021 年 9 月 15 日 |
2 | 2020 年 9 月 1 日 |
2 | 2020 年 9 月 12 日 |
2 | 2020 年 9 月 14 日 |
数据框已按部分排序,然后按日期排序。
我需要计算上一行中每个日期之间的天数。
每次part
遇到新行时,都必须重新开始日期差异计算。
所以所需的输出将是:
部分 | 日期 | 差异 |
---|---|---|
1 | 2021 年 9 月 1 日 | |
1 | 2021 年 9 月 8 日 | 7 |
1 | 2021 年 9 月 15 日 | 7 |
2 | 2020 年 9 月 1 日 | |
2 | 2020 年 9 月 12 日 | 11 |
2 | 2020 年 9 月 14 日 | 2 |
您将如何处理这些数据以实现所需的输出?
对此的任何帮助将不胜感激!
谢谢
解决方案
使用groupby
+ diff
:
df.groupby('Part').Date.diff()
0 NaT
1 7 days
2 7 days
3 NaT
4 11 days
5 2 days
Name: Date, dtype: timedelta64[ns]
如果你没有Date
作为时间戳,你可以使用df.Date = pd.to_datetime(df.Date)
转换。
推荐阅读
- pact - 数组中不同数量元素的约定匹配器
- python - 反导积分
- spring-boot - HttpClientErrorExcepton$NotFound:restTemplate.exchange 错误与 get
- excel - 需要根据多个开放和关闭来计算一个月中的开放天数
- dynamic - 如何在 actix_web/rust 的 http 响应中流式传输非静态字节?
- python - 使用 io.StringIO() 和 io.BytesIO() 时出错
- javascript - 自己的JS上的整数变化值
- pip - 我无法使用网络上的解决方案卸载 Jupyter
- python - 循环遍历文件以从 s3 - boto3 中删除文件?
- amazon-web-services - 将视频转码以进行流式传输的最佳方法是什么?