gpt4 book ai didi

python - Pandas 重采样错误 : Only valid with DatetimeIndex or PeriodIndex

转载 作者:IT老高 更新时间:2023-10-28 22:21:24 26 4
gpt4 key购买 nike

在 DataFrame 上使用 panda 的 resample 函数以将刻度数据转换为 OHLCV 时,遇到重采样错误。

我们应该如何解决这个错误?

data = pd.read_csv('tickdata.csv', header=None, names=['Timestamp','Price','Volume']).set_index('Timestamp')
data.head()

enter image description here

# Resample data into 30min bins
ticks = data.ix[:, ['Price', 'Volume']]
bars = ticks.Price.resample('30min', how='ohlc')
volumes = ticks.Volume.resample('30min', how='sum')

这给出了错误:

TypeError: Only valid with DatetimeIndex or PeriodIndex

最佳答案

将索引中的整数时间戳转换为 DatetimeIndex:

data.index = pd.to_datetime(data.index, unit='s')

这会将整数解释为自纪元以来的秒数。


例如,给定

data = pd.DataFrame(
{'Timestamp':[1313331280, 1313334917, 1313334917, 1313340309, 1313340309],
'Price': [10.4]*3 + [10.5]*2, 'Volume': [0.779, 0.101, 0.316, 0.150, 1.8]})
data = data.set_index(['Timestamp'])
# Price Volume
# Timestamp
# 1313331280 10.4 0.779
# 1313334917 10.4 0.101
# 1313334917 10.4 0.316
# 1313340309 10.5 0.150
# 1313340309 10.5 1.800

data.index = pd.to_datetime(data.index, unit='s')

产量

                     Price  Volume
2011-08-14 14:14:40 10.4 0.779
2011-08-14 15:15:17 10.4 0.101
2011-08-14 15:15:17 10.4 0.316
2011-08-14 16:45:09 10.5 0.150
2011-08-14 16:45:09 10.5 1.800

然后

ticks = data.ix[:, ['Price', 'Volume']]
bars = ticks.Price.resample('30min').ohlc()
volumes = ticks.Volume.resample('30min').sum()

可以计算:

In [368]: bars
Out[368]:
open high low close
2011-08-14 14:00:00 10.4 10.4 10.4 10.4
2011-08-14 14:30:00 NaN NaN NaN NaN
2011-08-14 15:00:00 10.4 10.4 10.4 10.4
2011-08-14 15:30:00 NaN NaN NaN NaN
2011-08-14 16:00:00 NaN NaN NaN NaN
2011-08-14 16:30:00 10.5 10.5 10.5 10.5

In [369]: volumes
Out[369]:
2011-08-14 14:00:00 0.779
2011-08-14 14:30:00 NaN
2011-08-14 15:00:00 0.417
2011-08-14 15:30:00 NaN
2011-08-14 16:00:00 NaN
2011-08-14 16:30:00 1.950
Freq: 30T, Name: Volume, dtype: float64

关于python - Pandas 重采样错误 : Only valid with DatetimeIndex or PeriodIndex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30857680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com