2016-09-20 5 views
0

Ich habe eine Liste von Ländern wie:Aufruf eines Datenrahmen über eine Zeichenfolge

country = ["Brazil", "Chile", "Colombia", "Mexico", "Panama", "Peru", "Venezuela"] 

I-Datenrahmen erstellt, die Namen aus der Länderliste mit:

for c in country: 
    c = pd.read_excel(str(c + ".xls"), skiprows = 1) 
    c = pd.to_datetime(c.Date, infer_datetime_format=True) 
    c = c[["Date", "spreads"]] 

Jetzt will ich sein in der Lage, alle Länderdatenrahmen unter Verwendung des Datums der Spalten als der Schlüssel zusammenzuführen. Die Idee ist, eine Schleife wie die folgenden zu erzeugen:

df = Brazil #this is the first dataframe, which also corresponds to the first element of the list country. 

for i in range(len(country)-1): 
    df = df.merge(country[i+1], on = "Date", how = "inner") 
df.set_index("Date", inplace=True) 

Ich habe den Fehler ValueError: can not merge DataFrame with instance of type <class 'str'>. Es scheint, dass Python den Datenrahmen nicht anruft, dessen Name in der Länderliste steht. Wie kann ich diese Datenframes ausgehend von der Länderliste aufrufen?

Danke Meister!

Antwort

0

Ihre Schleife ändert nicht den Inhalt der country Liste, also country ist immer noch eine Liste von Zeichenfolgen.

Betrachten wir eine neue Liste von Datenrahmen zu bauen und über das Looping:

country_dfs = [] 
for c in country: 
    df = pd.read_excel(c + ".xls", skiprows=1) 
    df = pd.to_datetime(df.Date, infer_datetime_format=True) 
    df = df[["Date", "spreads"]] 
    # add new dataframe to our list of dataframes 
    country_dfs.append(df) 

dann zu fusionieren,

merged_df = country_dfs[0] 
for df in country_dfs[1:]: 
    merged_df = merged_df.merge(df, on='Date', how='inner') 
merged_df.set_index('Date', inplace=True) 
+0

Danke für den Einblick. Ich habe die Idee, aber irgendwie bin ich nicht in der Lage, das merged_df zu sehen. – Guga

Verwandte Themen