2016-09-20 16 views
0

私は、次のような国のリストがあります:は、文字列を介してデータフレームを呼び出し

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"]] 

は、今私はなりたい:

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

は、私は国のリストから名前を使用してデータフレームを作成します列の日付をキーとしてすべての国のデータフレームをマージすることができます。アイデアは、以下のようなループを作成することです:

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) 

私はエラーValueError: can not merge DataFrame with instance of type <class 'str'>を得ました。 Pythonは、名前が国リストにあるデータフレームを呼び出さないようです。国リストからどのようにデータフレームを呼び出すことができますか?

ありがとうございます!

答えて

0

ループはcountryリストの内容を変更しないため、countryはまだ文字列のリストです。

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) 

、その後、洞察力のための

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

感謝をマージする:

は、データフレームの新しいリストを構築し、その上でループを考えてみましょう。私は考えを持っていますが、何とか私はmerged_dfを見ることができません。 – Guga

関連する問題