计算索引的 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 中的时间?