首页 > 解决方案 > Pandas 计算过滤数据集的时间增量

问题描述

如果我编造一些时间序列数据:

import pandas as pd
import numpy as np
from numpy.random import seed

# seed random number generator
seed(1)

time = pd.date_range('6/28/2021', periods=100, freq='1min')
df = pd.DataFrame(np.random.randint(100, size=100), index=time,columns=['data'])

df.plot(figsize=(25,8))

这将绘制:

在此处输入图像描述

然后过滤数据何时data高于 50: df = df.loc[df['data'] > 50]

当数据高于 50 时,如何计算时间增量?仅高于 50 的值。例如,如果我这样做:

# Compute delta time 
df['time_delta'] = df.index.to_series().diff().astype('timedelta64[m]')

df.time_delta.sum()

我不认为总和是正确的,因为这将包括数据低于 50 时的时间增量,完全希望仅在值高于 50 时检索时间增量是有意义的。

标签: pythonpandastime-seriestimedelta

解决方案


您可以mask计算后的数据diff

df.index.to_series().diff().mask(df['data'].le(50)).sum()

输出:Timedelta('0 days 00:44:00')


推荐阅读