我有这组数据

2016-08-09 12:39:00,536.7841,536.7849,536.6141,536.7849,0.656
2016-08-09 12:40:00,536.6749,536.6749,536.6749,536.6749,0.2642
2016-08-09 12:41:00,535.84,535.84,535.615,535.615,0.348
2016-08-09 12:42:00,535.5401,535.5401,534.1801,534.1801,0.507
2016-08-09 12:43:00,534.5891,534.8753,534.5891,534.807,0.656
2016-08-09 12:44:00,534.8014,534.878,534.8014,534.8416,0.502
2016-08-09 12:45:00,534.8131,534.8131,534.2303,534.6736,0.552
2016-08-09 12:47:00,534.756,538.5999,534.756,534.7836,0.62647241
2016-08-09 12:48:00,536.0557,536.6864,536.0557,536.6864,1.2614
2016-08-09 12:49:00,536.8966,537.7289,536.8966,537.7289,0.532
2016-08-09 12:50:00,537.9829,539.2199,537.9829,539.2199,0.67752932
2016-08-09 12:51:00,538.5,539.2199,538.5,539.2199,0.43768953

我想重新采样到5分钟的OHCLV,所以我做了这个代码:

import pandas as pd

df= pd.read_csv("C:\Users\Araujo's PC\Desktop\python_scripts\CSV\cex_btc.csv",
                names=['timestamps','open','high','low','close','volume'])

df.set_index('timestamps',inplace=True)

ohlc_dict = {
    'open':'first',
    'high':'max',
    'low':'min',
    'close':'last',
    'volume':'sum'
    }

df.resample('5T', how=ohlc_dict)

print df

我觉得这个错误:

TypeError:仅对DatetimeIndex,TimedeltaIndex或PeriodIndex有效,但得到'Index'的实例

有人可以帮我吗?

#1楼 票数:3 已采纳

您只需要在将索引设置为值之前将timestamps列中的值转换为pandas时间戳。 它们目前只是我认为的文本字段。

df['timestamps'] = pd.to_datetime(df['timestamps'])
df.set_index('timestamps', inplace=True)

>>> df.resample('5T', how=ohlc_dict)

                         high     close      open       low    volume
timestamps                                                           
2016-08-09 12:35:00  536.7849  536.7849  536.7841  536.6141  0.656000
2016-08-09 12:40:00  536.6749  534.8416  536.6749  534.1801  2.277200
2016-08-09 12:45:00  538.5999  537.7289  534.8131  534.2303  2.971872
2016-08-09 12:50:00  539.2199  539.2199  537.9829  537.9829  1.115219

您还可以在阅读csv时尝试解析这些:

pd.read_csv(filename, parse_dates=['timestamps'],
            names=['timestamps','open','high','low','close','volume'])

  ask by hopieman translate from so

未解决问题?本站智能推荐:

1回复

Python Pandas Dataframe:如何从现有数据框列中获取趋势线数据?

我希望能够从我的其他列的两个点创建包含趋势线数据的列,例如 5 天后的收盘价到收盘价。 我希望趋势线向前和向后看,延伸超过绘制它的 2 个点。 现在我不想在 mplfinance 或 matplotlib 中绘制它们,我只想要趋势线编号,以便我可以使用它们。 任何帮助是极大的赞赏 :)
1回复

尝试合并多个数据框时,如何解决“ ValueError:如果使用所有标量值,则必须传递索引”

我正在尝试从Bitfinex交易所获取并存储所有历史1分钟蜡烛数据。 尝试将新数据帧追加到现有数据帧时,我收到此错误“ ValueError:如果使用所有标量值,则必须传递索引”,尽管在构造函数中传递了索引。 在这里尝试了解决方案-在DataFrame构造函数中传递索引: 从变量中的值构
1回复

如何对熊猫数据框进行升采样

我有一个逗号分隔的数据文件,如下所示: 等等 现在,我想使用开始时间和持续时间创建以下内容以对数据进行上采样。 但我对如何执行此操作感到有些奇怪,因为升采样似乎只能与时间序列一起使用? 我当时在考虑使用StartTimeStamp和文件中的秒数来进行for循环,但是在如何
1回复

Python:具有比率的不平衡数据的分层抽样

这是我的数据框: 因为 var4 是不平衡的。 我var4 = 0根据组var2和var3获取每个var4 = 1和两倍数量的var4 = 0 。 结果,组“a”“y”将有一个“1”和两个“0”; 组 'b''r' 将有两个 '1' 和 4 '0'。 其他组将没有。 看起来像下面的一个: 我
2回复

Python - 从数据框中采样行而无需替换

我想在不替换的情况下从 Pandas 数据框中采样行。 我的意思是这个。 在 for 循环的每次迭代中,我从COMBINED抽取一定数量的行而不进行替换。 我想确保超过 50,000 次迭代,我再也不会对同一行进行采样。 我下面的代码试图解决这个采样问题,但出现错误。 COMBINED , TE
1回复

使用Python的panda对多传感器时间序列数据进行子采样

我有一个来自多个传感器读数的文件。 每行的格式如下: 例如 读数频率是不规则的,大约为10-20Hz。 我需要将这些读数下采样到1Hz,并以以下格式输出结果 反映连续几秒中传感器读数的(运行?)平均值,例如 我将输入文件的每一行加载到字典中,如下所示:
1回复

即使子值从数据框中获得的数据较少,也获取 N 个样本

我有一个数据框,它有三列 m_name、description、type。 该类型具有值“c”和“b”。 我想为数据框中的每个名称获取 50 个样本,类型 c 和 b 各获取 25 个样本。 我能够通过以下代码做到这一点。 在上面的代码中,如果任何特定类型的值少于 25 个,代码将取整个值作为样
1回复

将值重新采样为更小的值

我有这种类型的数据框,它显示了 00:00:00 -> 01:00:00 和 01:00:00 -> 02:00:00 小时之间的太阳能生产 我需要在各自的小时内分配值 32.7171 和 70.2465,这意味着 00:00:00 -> 01:00:00 之间的值的总和不应大