我试图在Python中将刻度数据从GainCapital转换为OHLC,但我遇到了问题
源数据链接在这里http://ratedata.gaincapital.com/
我输入的代码如下:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import mpl_finance
from datetime import *
def conv_str_to_datetime(x):
return(datetime.strptime(x, '%Y/%m/%d %H:%M:%S'))
df = pd.read_csv('USD_JPY_Week3.csv', names=['lTid', 'cDealable', 'CurrencyPair', 'RateDateTime','RateBid','RateAsk'],
converters={'RateDateTime': conv_str_to_datetime}) # or change 'converters' to 'parse_dates=True' here
grouped = df.groupby('CurrencyPair')
ask = grouped['RateAsk'].resample('15Min').ohlc()
bid = grouped['RateBid'].resample('15Min').ohlc()
pandas.concat([ask, bid], axis=1, keys=['RateAsk', 'RateBid'])
使用converters
时,我得到:
ValueError:时间数据'RateDateTime'与格式'%Y /%m /%d%H:%M:%S'不匹配
当我将其替换为parse_dates=True
时,Python返回:
TypeError:仅对DatetimeIndex,TimedeltaIndex或PeriodIndex有效,但具有“ RangeIndex”的实例
我对此完全感到困惑,如果有人可以帮助我使我的代码正常工作,我将不胜感激。
enter image description here 请注意,在我用红色圆圈突出显示的屏幕快照中,同一单元格的日期时间显示之间的差异可能是造成这种情况的原因之一,但我不确定
文件的前10行在这里:
lTid cDealable CurrencyPair RateDateTime RateBid RateAsk
6858533811 D USD/JPY 00:06.4 110.585 110.605
6858534097 D USD/JPY 03:10.1 110.584 110.604
6858534127 D USD/JPY 03:30.1 110.583 110.603
6858534151 D USD/JPY 04:11.6 110.58 110.593
6858534284 D USD/JPY 05:15.4 110.58 110.591
6858534287 D USD/JPY 05:15.6 110.58 110.59
6858534316 D USD/JPY 05:30.1 110.58 110.591
6858534335 D USD/JPY 05:34.9 110.565 110.585
6858534342 D USD/JPY 05:35.1 110.565 110.58