【发布时间】:2018-01-05 07:04:23
【问题描述】:
方法1
def getAndBuildDatafrmeFromCsvBasic(filename):
colTypes = {'Open': 'float64', 'High': 'float64', 'Low': 'float64', 'Close': 'float64', 'Volume': 'float64'}
dfEurUsd2017 = pd.read_csv(filename, delimiter=",", index_col='Gmt time', dtype=colTypes, parse_dates=['Gmt time'])
return dfEurUsd2017
方法2
def getAndBuildDatafrmeFromCsv(filename):
df = pd.read_csv(filename, header=None)
df.columns = ['date', 'Open', 'High', 'Low', 'Close', 'Volume']
df.date = pd.to_datetime(df.date, format='%d.%m.%Y %H:%M:%S.%f')
df.index = df['date']
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]
return df
结果方法1
Open High Low Close Volume
Gmt time
2017-12-04 23:00:00 1.06672 1.06699 1.06636 1.06698 1889.56
结果方法2
Open High Low Close Volume
Gmt time
2017-12-04 23:00:00 1.18686 1.18699 1.18666 1.18682 2004.46
为什么 method1 会错误地解析 Open、High、Low、Close、Volume 的值? Method2 产生正确的输出。我担心为什么这两种方法输出完全不同的数值,即使音量不同。然而 csv 文件是一样的。
CSV 中的行
04.12.2017 23:00:00.000,1.18686,1.18699,1.18666,1.18682,2004.4599999999998
04.12.2017 23:30:00.000,1.18682,1.18706,1.18652,1.18681,1242.68
05.12.2017 00:00:00.000,1.18681,1.18691,1.18639,1.18653,2666.81
05.12.2017 00:30:00.000,1.18653,1.18726,1.18650,1.18709,3567.2400000000007
05.12.2017 01:00:00.000,1.18708,1.18750,1.18707,1.18738,3105.4699999999993
05.12.2017 01:30:00.000,1.18738,1.18744,1.18691,1.18732,3561.5
05.12.2017 02:00:00.000,1.18732,1.18766,1.18704,1.18740,2706.6400000000003
【问题讨论】:
-
您的 CSV 文件是什么样的?你能贴几行吗?
-
@cᴏʟᴅsᴘᴇᴇᴅ 刚刚更新了 CSV 中几行的问题
-
@cᴏʟᴅsᴘᴇᴇᴅ 感谢您的编辑。
-
我无法重现:imgur.com/a/j2Y6t
-
@AntonvBR Gmt Time 是 csv Gmt time 中的列名,Open,High,Low,Close,Volume
标签: python python-3.x python-2.7 pandas