使用Pandas库将历史Metatrader CSV数据导入Python(日期/时间解析)

时间:2012-07-26 16:06:07

标签: python parsing csv pandas metatrader4

我有一些像

这样的CSV数据
2011.12.08,22:45,1.33434,1.33465,1.33415,1.33419,265
2011.12.08,23:00,1.33419,1.33542,1.33419,1.33472,391
2011.12.08,23:15,1.33470,1.33483,1.33383,1.33411,420
2011.12.08,23:30,1.33413,1.33451,1.33389,1.33400,285
来自Metatrader 4的文件名为EURUSD15.csv

我想使用Pandas库和read_csv函数导入这个文件...

所以我这样做了:

#!/usr/bin/env python
from pandas import *
df = read_csv('data/EURUSD15.csv', header=None)
df.columns = ['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']
print(df)

我现在要解析日期/时间......

所以我改变了

df = read_csv('data/EURUSD15.csv', header=None)

df = read_csv('data/EURUSD15.csv', header=None, parse_dates=[[1, 2]])

但我收到此错误消息

Exception: Length mismatch (7 vs 6)

如何解析日期和时间列,并将2列视为1“datetime”列。

3 个答案:

答案 0 :(得分:0)

parse_dates不接受索引值。

尝试类似:

pd.read_csv('data/EURUSD15.csv',  parse_dates = [['YYYY.MM.DD', 'HH:MM']], index_col = 0, 
        date_parser=parse)

答案 1 :(得分:0)

parse = lambda x: datetime.strptime(x, '%d-%m-%Y %H:%M')
df = pd.read_csv('data/EURUSD15.csv', parse_dates=[[0, 1]], date_parser=parse, index_col=[0],   header=None)
keys = ['Open', 'High', 'Low', 'Close','Volume']
df.columns = [x for x in keys]

答案 2 :(得分:0)

更简单的方法是使用名为 pytrader 的拖放解决方案,请在 github 上查看。