在行、多个键上滚动 datediff
Rolling datediff over rows, multiple keys
我有一个如下所示的数据框:
Part
Date
1
9/1/2021
1
9/8/2021
1
9/15/2021
2
9/1/2020
2
9/12/2020
2
9/14/2020
数据框已经按部分排序,然后按日期排序。
我需要计算上一行中每个日期之间的天数。
每次遇到新的 part
行时,日期差异计算都必须重新开始。
所以期望的输出是:
Part
Date
Diff
1
9/1/2021
1
9/8/2021
7
1
9/15/2021
7
2
9/1/2020
2
9/12/2020
11
2
9/14/2020
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)
转换。
我有一个如下所示的数据框:
Part | Date |
---|---|
1 | 9/1/2021 |
1 | 9/8/2021 |
1 | 9/15/2021 |
2 | 9/1/2020 |
2 | 9/12/2020 |
2 | 9/14/2020 |
数据框已经按部分排序,然后按日期排序。
我需要计算上一行中每个日期之间的天数。
每次遇到新的 part
行时,日期差异计算都必须重新开始。
所以期望的输出是:
Part | Date | Diff |
---|---|---|
1 | 9/1/2021 | |
1 | 9/8/2021 | 7 |
1 | 9/15/2021 | 7 |
2 | 9/1/2020 | |
2 | 9/12/2020 | 11 |
2 | 9/14/2020 | 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)
转换。