2016-07-08 9 views
2

Ich möchte Zeitreihendaten in einem Datenrahmen von einem CSV enthalten. Ich benutze das folgende Verfahren:Wie berechnet Pandas Indizes?

path = [r'C:\data_' + str(x) + ".csv" for x in range(1150, 1177)] 
data_df = pd.concat(pd.read_csv(f, delimiter = ",", header = None) for f in path) 

data_df.head() 

head

Und das Ergebnis ist wie folgt aus:

data_df.info() 

indexes

Wie ist es möglich, dass Indizes (1-187481) unterscheiden aus der Anzahl der Zeilen (5387507)?

Doing

data_df.reset_index() 

Dinge normal:

indexes corrected

Wie wird der Anfangsindex berechnet?

+2

Versuch 'zu verwenden ignore_index = true' im' pd.concat() 'Anruf. Jeder Aufruf von 'pd.read_csv()' generiert seinen eigenen Index für jede CSV-Datei und wenn Sie sie verketten - 'pd.concat()' kopiert diese standardmäßig, so dass Sie doppelte Einträge haben ... – MaxU

+0

danke @ MaxU für die Hilfe! – jcsun

Antwort

2

Es gibt Duplikate in indexes, weil jeder index von DataFrame beginnt von 0 in concat Funktion.

Und als MaxU kommentierte Lösung hinzufügen Parameter ignore_index=True zu concat-docs:

data_df = pd.concat(pd.read_csv(f, delimiter = ",", header = None) for f in path, ignore_index=True) 
+0

Großartig! vielen Dank! – jcsun