1

我的数据如下所示:

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

我究竟做错了什么?

4

3 回答 3

2

这是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
于 2015-02-12T05:16:02.493 回答
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

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

于 2013-08-04T12:26:30.887 回答
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(',','.'))})
于 2013-07-26T18:20:47.480 回答