在行、多个键上滚动 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)转换。