2016-06-24 9 views
0

Ich habe ein seltsames Verhalten, wenn ich versuche, eine Datumsspalte zu analysieren und diese Spalte als Index zu setzen, während ich von einer CSV mit Pandas lese.Pandas analysiere Datum und setze Index- seltsames Verhalten

Die CSV-Datei hat sowohl einen Wegwerf-Header und eine Wegwerf-Index-Spalte wie unten (von Wegwerf-Ich meine, ich will nicht, sie benutzen) Jetzt

"","X.m..d..y","fizzBuzz" 
"1","2/2/1984",0.02523659 
"2","2/3/1984",-0.03692308 
"3","2/6/1984",-0.01597444 
"4","2/7/1984",-0.006493506 
"5","2/8/1984",-0.0130719 

, ich kann leicht die df lesen und dann den Index gesetzt anschließend mit dem folgenden Ausschnitt

import pandas as pd 
df = pd.read_csv('stackOverflow.csv',header=0, 
        names=['_throAwayindex','date','value'], usecols=['date','value'], 
        parse_dates=['date']) 
df = df.set_index('date') 
df 

die perfekt gibt das gewünschte Ergebnis

   value 
date     
1984-02-02 0.025237 
1984-02-03 -0.036923 
1984-02-06 -0.015974 
1984-02-07 -0.006494 
1984-02-08 -0.013072 

Aber wenn ich versuche, den Index im read_csv Aufruf einzustellen, bekomme ich ein seltsames Ergebnis. Diese Fehl Namen der Indexspalte

df = pd.read_csv('stackOverflow.csv',header=0, 
        names=['_throAwayindex','date','value'], usecols=['date','value'], 
        parse_dates=['date'], index_col=0) 
df 
        value 
_throAwayindex   
2/2/1984  0.025237 
2/3/1984  -0.036923 
2/6/1984  -0.015974 
2/7/1984  -0.006494 
2/8/1984  -0.013072 

Und das tut alles falsch:

df = pd.read_csv('stackOverflow.csv',header=0, 
        names=['_throAwayindex','date','value'], usecols=['date','value'], 
        parse_dates=['date'], index_col=1) 
df 
       date 
date    
0.025237 2/2/1984 
-0.036923 2/3/1984 
-0.015974 2/6/1984 
-0.006494 2/7/1984 
-0.013072 2/8/1984 

Ich habe Interesse sowohl in dem, was passiert ist und wie könnte auch das gewünschte Ergebnis in nur dem read_csv Anruf erreichen, ohne der zweite Anruf an set_index.

+0

Die Strategie mit 'index_col = 0' funktioniert für mich (Python 3.5.1, Pandas 0.18.1). Es gab einen Fehler, der bei der Verwendung von 'parse_dates' und' usecols' auftrat, die in 0.18.1 behoben wurden (https://github.com/pydata/pandas/commit/c6c201e27c7ed57a823ec7261340dfeec1e0226a). Vielleicht hast du eine ältere Version ? –

+0

das ist es. aktualisiert und es funktioniert gut. Gracias. Wenn du die Antwort postest, kann ich sie als geschlossen markieren –

Antwort

1

Die Strategie mit index_col=0 funktioniert für mich (Python 3.5.1, Pandas 0.18.1). Es gab einen Fehler, der bei der Verwendung von parse_dates und usecols auftrat, der in 0.18.1 (commit) behoben wurde. Vielleicht hast du eine ältere Version?