【问题标题】:Convert consecutive time difference (timedelta) to seconds将连续时间差(timedelta)转换为秒
【发布时间】:2016-02-01 00:57:13
【问题描述】:

我在 d 的 DataFrame 中使用以下方法计算了我的连续时间差:

d['delta'] = (d['time'] - d['time'].shift()).fillna(0)

所以我在“delta”列中有时间差。我的问题是如何将其转换为秒?输出格式为 00:50:00,我想将其转换为 3000 秒。

【问题讨论】:

    标签: python pandas datetime dataframe timedelta


    【解决方案1】:

    您的列是 timedelta64 类型,因此您可以使用 .dt 访问器来查找 seconds 属性:

    d['delta'].dt.seconds
    

    有关.dt 访问器的更多信息,请访问here


    正如@Jeff 在 cmets 中指出的那样,使用 total_seconds() 而不是 seconds 可能会更好;后者仅返回整数(整数)秒数( 1 天 == 86400 秒),而前者将返回浮点值,计算更小的时间单位(ms,ns)以及天数价值:

    d['delta'].dt.total_seconds()
    

    【讨论】:

    • AttributeError: 'Series' 对象没有属性 'dt'
    • 您使用的是哪个版本的 pandas (pd.__version__)?
    • 那是一个非常古老的熊猫版本。 .dt 访问器是在大约 0.15 中引入的。当前版本是 0.17 - 我强烈建议您升级到该版本,因为已经进行了许多增强和错误修复。
    • 我正在尝试升级它
    • 而您实际上想要进行频率转换,例如d['delta'].dt.total_seconds()d['delta'].astype('timedelta64[s]'),请参阅文档 here
    猜你喜欢
    • 2023-01-05
    • 2018-12-02
    • 1970-01-01
    • 2011-07-28
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多