python - 通过插值减去 Pandas 中具有不规则和规则时间戳的两个系列

标签 python pandas time-series

我正在处理两个以时间戳为索引的 Pandas 系列。一个系列是具有固定频率的粗糙模型,另一个是没有固定频率的数据。我想从数据中减去模型并(线性或样条)插入模型的值。

这是一个例子:

import numpy as np
import pandas as pd


# generate model with fixed freq
model = pd.Series(range(5),index=pd.date_range('2017-06-19T12:05:00', '2017-06-19T12:25:00', freq="5 min"))

# generate data and add more_data to make frequency irregular
data = pd.Series(np.arange(10)+0.3,index=pd.date_range('2017-06-19T12:06:00', 
'2017-06-19T12:24:00', freq="2 min"))
more_data = pd.Series([-10, -20], index=[pd.Timestamp('2017-06-19T12:07:35'), 
pd.Timestamp('2017-06-19T12:09:10')])
data = data.append(more_data).sort_index()

我试过了

data - model.interpolate()[data.index]

但这只会给我非 NaN 值,其中模型的时间戳和数据重叠。

我知道我可以对数据重新采样以适应模型的频率 (),但我确实希望在数据的原始时间戳处将数据减去模型。

最佳答案

所以在this的帮助下answer 我找到了我的问题的解决方案,只在实际需要的点进行插值:

首先,生成一系列带有data时间戳的NaN:

na = pd.Series(None, data.index)

并将其与模型结合起来:

combi = model.combine_first(na)

现在可以从数据中插入和减去这个系列

(data - combi.interpolate(method='time'))[data.index]

或作为单行

(data - model.combine_first(pd.Series(None, data.index)).interpolate(method='time'))[data.index]

关于python - 通过插值减去 Pandas 中具有不规则和规则时间戳的两个系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44635090/

相关文章:

python - 就地放置 Pandas 列会触发SettingWithoutCopy 警告

python - python模块存储在哪里?

python - Pandas 如何选择行具有最大值的列?

database - 时间序列数据的键值存储?

python - 发送带有源端口但不绑定(bind)的 UDP 数据包

python - 使用 API REST 创建的 GitHub secret 但返回空

python - Pandas:按分隔符拆分列并根据其他列重新排列

python - 如何从python中numpy lib的mean方法中删除e科学记数法

r - 小时间序列分析

node.js - 新 ServiceNotAvailableError 处的 influxDB 内部服务器错误