【问题标题】:Rolling datediff over rows, multiple keys在行、多个键上滚动 datediff
【发布时间】:2021-11-11 01:39:11
【问题描述】:

我有一个如下所示的数据框:

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

您将如何处理这些数据以实现所需的输出?

对此的任何帮助将不胜感激!

谢谢

【问题讨论】:

    标签: python pandas dataframe datediff


    【解决方案1】:

    使用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)进行转换。

    【讨论】:

    • 我得到一个 TypeError: 'numpy.timedelta64' object is not iterable,。尝试此代码时。
    • @jmarusiak 你能分享什么是 df.dtypes 吗?
    • 零件对象日期 datetime64[ns] dtype: object
    • @jmarusiak 嗯,这很奇怪,你不应该得到这段代码的错误。
    • 酷。很高兴知道它对您有用!
    猜你喜欢
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多