我有以下代码:
import pandas as pd
from pandas import datetime
from pandas import DataFrame as df
import matplotlib
import datetime
import fxcmpy
import numpy as np
print(con.get_instruments())
symbols = con.get_instruments()
ticker = 'NGAS'
start = datetime.datetime(2015,1,1)
end = datetime.datetime.today()
data1= con.get_candles(ticker, period='m1', number=10000)
data.index = pd.to_datetime(data.index, format ='%Y-%m-%d %hh:%mm %s')
data.index = pd.to_datetime(data.index, format ='%Y-%m-%d %hh:%mm %s')
data['hour'] = data.index.hour
data['minute'] = data.index.minute
一切正常,直到这里:
我跑步时
data.set_index('minute', inplace = True)
data.set_index('hour', inplace = True)
我收到以下错误
KeyError: "None of ['minute'] are in the columns"
如何将小时和分钟设置为索引?
答案 0 :(得分:1)
我不是使用 fxcmpy 而是从源CSV文件读取数据, 这样它最初包含:
C1 C2
2019-05-02 12:33 22 Xxxx1 Yyyy1
2019-05-04 10:12 00 Xxxx2 Yyyy2
2019-05-05 16:54 13 Xxxx3 Yyyy3
(没有名称的索引,为 string )。
您的错误采用 format 参数:
有关详细信息,请参见https://strftime.org/
因此将您的代码更正为:
data.index = pd.to_datetime(data.index, format='%Y-%m-%d %H:%M %S')
,您的DataFrame的索引将更改为 datetime64 。
然后
data['hour'] = data.index.hour
data['minute'] = data.index.minute
应该没有错误地执行(至少我没有错误)。
但是您编写2条单独指令的方式是,首先将索引设置为 hour 并且然后到分钟看起来很奇怪。
也许您想创建具有两者 小时和分钟列的MultiIndex? 如果是这种情况,请运行:
data.set_index(['hour', 'minute'], inplace=True)