2016-06-22 5 views
3

Ich habe 40 Jahre von Daten, also habe ich versucht, jeden von ihnen zu einem Datenrahmen einzeln zuweisen, dann speichern sie alle in einem neuen Datenrahmen, dann sortieren sie. Im Folgenden finden Sie, was ich bisher habe:Zuweisen von Daten zu separaten Datenrahmen, Kombinieren und Sortieren nach Jahr

import pandas as pd 
from pandas import DataFrame 

year = 1976 
count = 1 

for i in range(0,40): 

    df[count] = pd.read_excel('42003h'+str(year)+'.xlsx', sheet_name = 'Sheet1') 

    count = count + 1 
    year = 1976 + 1 

mir gegeben wurde, bitte

Falsche Anzahl von Artikel 12 übergeben, Platzierung bedeutet 1

Jede Hilfe würde geschätzt diese Fehler?

Antwort

1

Ich glaube, Sie erste Liste von Dataframesdfs erstellen und dann concat es zu einem df. count ist nicht notwendig. Letzte IIUC sort_values durch Spalte year:

import pandas as pd 

year = 1976 

dfs = [] 
for i in range(0,40): 
    dfs.append(pd.read_excel('42003h'+str(year)+'.xlsx', sheet_name = 'Sheet1')) 
    year += 1 

#if need concat by columns   
#df = pd.concat(dfs, axis=1) 

#if need concat by rows 
df = pd.concat(dfs) 

#if need sort by column `year` 
df.sort_values(by='year', inplace=True) 
+0

dies nur scheint mir geben zu werden 1977 tatsächlich beginnt bei 1976 und geht direkt bis zum Jahr 2015, dann auf dem Schwanz das Datum ist nicht mehr da es zeigt Zahlen wie 1609 - 1613 und es sollte nach Index sortiert werden sorry über das – renardo

+0

Sie sind richtig, Tippfehler. Bitte siehe Bearbeiten. – jezrael

0

Ich glaube, Sie müssen Ihr Wörterbuch initialisieren:

df = {} 
for i in range(0,40): 

    df[count] = pd.read_excel('42003h'+str(year)+'.xlsx', sheet_name = 'Sheet1') 
0

ich würde es auf diese Weise tun:

import glob 
import pandas as pd 

files = glob.glob('42003h*.xlsx') 

# if you want to merge your DFs horizontally then add: `axis=1` parameter 
df = pd.concat([pd.read_excel(f) for f in files], ignore_index=True).sort_values('year') 

count = len(files) 
+0

Dateien scheinen leer zu sein, aber es sollte nicht sein, weil die Dateien im aktuellen Verzeichnis – renardo

+0

@renardo sind, versuchen Sie es stattdessen: 'files = glob.glob ('42003h * .xlsx')' – MaxU