【发布时间】: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
我在 d 的 DataFrame 中使用以下方法计算了我的连续时间差:
d['delta'] = (d['time'] - d['time'].shift()).fillna(0)
所以我在“delta”列中有时间差。我的问题是如何将其转换为秒?输出格式为 00:50:00,我想将其转换为 3000 秒。
【问题讨论】:
标签: python pandas datetime dataframe timedelta
您的列是 timedelta64 类型,因此您可以使用 .dt 访问器来查找 seconds 属性:
d['delta'].dt.seconds
有关.dt 访问器的更多信息,请访问here。
正如@Jeff 在 cmets 中指出的那样,使用 total_seconds() 而不是 seconds 可能会更好;后者仅返回整数(整数)秒数(模 1 天 == 86400 秒),而前者将返回浮点值,计算更小的时间单位(ms,ns)以及天数价值:
d['delta'].dt.total_seconds()
【讨论】:
pd.__version__)?
.dt 访问器是在大约 0.15 中引入的。当前版本是 0.17 - 我强烈建议您升级到该版本,因为已经进行了许多增强和错误修复。
d['delta'].dt.total_seconds() 或 d['delta'].astype('timedelta64[s]'),请参阅文档 here