我的数据如下:
06.02.2013;13:00;0,215;0,215;0,185;0,205;0,00
我尝试以这种方式阅读:
s = pandas.read_csv(csv_file, sep=';', skiprows=3, index_col=[0],decimal=',',thousands='.',parse_dates={'Date': [0, 1]}, dayfirst=True)
(见http://www.nuclearphynance.com/Show%20Post.aspx?PostIDKey=164080 https://github.com/pydata/pandas/issues/2586)
这就是我得到的:
6022013.0 13:00 0.215 0.215 0.185 0.205 0
我做错了什么?
答案 0 :(得分:2)
这是bug fixed in pandas 0.13+(感谢此问题):
In [11]: pd.read_csv(StringIO(s), sep=';', header=None, parse_dates={'Dates': [0, 1]},
index_col=0, decimal=',', thousands=".")
Out[11]:
2 3 4 5 6
Dates
2013-06-02 13:00:00 1000.215 0.215 0.185 0.205 0
答案 1 :(得分:0)
我不确定这是不是一个错误。见下文,
我的数据文件是这样的,
date; time; col1; col2; col3; col4; col5
06.02.2013 ; 13:00 ; 0,215 ; 0,215 ; 0,185 ; 0,205 ; 0,00
06.02.2013 ; 13:00 ; 0,215 ; 0,215 ; 0,185 ; 0,205 ; 0,00
我在其上实现了以下代码,
import pandas
s = pandas.read_csv('test.txt', decimal=',',sep=';', parse_dates=True, index_col=[0])
print s
要获得,
time col1 col2 col3 col4 col5
date
2013-06-02 13:00 0.215 0.215 0.185 0.205 0
2013-06-02 13:00 0.215 0.215 0.185 0.205 0
这是你想要的结果。
请确保您使用的是最新的pandas版本
'0.11.0'
要处理数以千计的运营商......你可以使用
s = pandas.read_csv('test2.txt',sep=';',decimal=',', parse_dates=True, index_col=[0],converters={'col1':lambda x: float(x.replace('.','').replace(',','.'))})
答案 2 :(得分:0)
好的,运行示例文件时,日期解析工作正常。但是,我的数据如下所示:
Datum;Zeit;Er<F6>ffnung;Hoch;Tief;Schluss;Volumen
02.08.2013;14:00;8.428,58;8.431,67;8.376,28;8.406,94;73.393.682,00
01.08.2013;14:00;8.320,38;8.411,30;8.316,89;8.410,73;97.990.435,00
在这种情况下,日期无法识别:
s = pd.read_csv('test1.csv', decimal=',',sep=';', parse_dates=True, index_col=[0])
print s
....
02.08.2013 14:00 8.428,58 8.431,67 8.376,28 8.406,94 73.393.682,00
01.08.2013 14:00 8.320,38 8.411,30 8.316,89 8.410,73 97.990.435,00
对我来说,你的文件和我的文件之间的唯一区别是分隔符;
之间缺少空格?