pandas read_csv中的日期和时间

时间:2013-07-22 21:03:34

标签: python pandas

我的数据如下:

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

我做错了什么?

3 个答案:

答案 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

对我来说,你的文件和我的文件之间的唯一区别是分隔符;之间缺少空格?