计算索引的 Pandas df timedelta

Posted

技术标签:

【中文标题】计算索引的 Pandas df timedelta【英文标题】:Calculate Pandas df timedelta of index 【发布时间】:2021-12-20 07:24:53 【问题描述】:

有人知道如何计算索引时间戳的时间增量吗?

import pandas as pd
import numpy as np

# simulate some data
# ===================================
np.random.seed(0)
dt_rng = pd.date_range('2015-03-02 00:00:00', '2015-07-19 23:00:00', freq='T')
dt_idx = pd.DatetimeIndex(np.random.choice(dt_rng, size=2000, replace=False))
df = pd.DataFrame(np.random.randn(2000), index=dt_idx, columns=['col']).sort_index()

df

我在使用df['elapsed_time'] = pd.TimedeltaIndex(df) 时是否在使用with this?

这将引发错误: ValueError: Wrong number of items passed 2000, placement implies 1

【问题讨论】:

你不能传递一个DataFrame。只有一个系列。 df['elapsed_time'] = pd.TimedeltaIndex(df.index) 有点不清楚您要做什么,因为这只会占用底层的 ns 日期时间并将其 强制 转换为时间增量。它不会进行任何 timedelta 比较。 您似乎在寻找df['elapsed_time'] = df.index.to_series().diff() Difference pandas.DateTimeIndex without a frequency 【参考方案1】:

This answer很漂亮!

这将创建另一个我称之为 time_td 的 pandas 列,然后我可以将其转换为 timedelta64 其中m 代表我正在寻找的分钟。

df['time_td'] = df.index.to_series().diff().astype('timedelta64[m]')

然后我可以将这个 time_td 列与:

df.time_td.sum()

【讨论】:

以上是关于计算索引的 Pandas df timedelta的主要内容,如果未能解决你的问题,请参考以下文章

在 pandas df 中查找 timedelta 对象的均值和标准差

如何在转换 timedelta 变量时消除 pandas 中的错误?

如何将 timedelta 转换为 pandas 中的时间?

通过在 pandas 中添加 timedelta 来添加时间列

通过在pandas中添加timedelta来添加时间列

Pandas的函数应用层级索引统计计算