2017-03-21 27 views
0

私は 'recordDay'列'日' と5 DataFrame'番号''ID'を持っている、と私はdictionary内のすべての5つのデータフレームを置きます。私は'id''recordDay'に基づいて5つのCSVファイルに5つのデータフレームを保存したいと思います。ここでdataframe1の例とはだdataframe2Python - 異なるファイル名でCSVファイルを保存するにはどうすればいいですか?

df1          df2 
    day  number id recordDay   day  number id recordDay 
2017-03-21  17  1 1990-01-01  2016-03-21 6  2 1991-02-01 
2017-03-22  19  1 1990-01-01  2016-03-22 8  2 1991-02-01 
2017-03-23  21  1 1990-01-01  2016-03-23 10  2 1991-02-01 

それは、'id_1_1991_01_01.csv''id_2_1991_02_01.csv''id_3_1991_03_01.csv''id_4_1991_04_01.csv''id_5_1991_05_01.csv' または'id_1.csv' ... 'id_5.csv'が良いだろう。このようなファイル名で5つのCSVファイルを保存することは可能ですか?

次のコードを使用しましたが、1つのCSVファイルしか保存しませんでした。

pd.concat(df_dict).to_csv('data.csv', index = False, data_format = '%Y-%m-%d) 
+1

あなたはそれが一つのファイルよりも多くを保存すると思いましたのはなぜ? – jonrsharpe

+1

データフレームを辞書に入れる前にデータフレームを保存してみませんか? .df {number} .to_csv( '{file_name} .csv'、index = False、data_format = '%Y-%m-%d)' – cur4so

答えて

1

辞書の反復処理 - .iloc []を使用して、名前のrecordIDとidの値を取得します。

df1 = pandas.DataFrame(numpy.random.randn(3, 4), columns=[["day", "number", "id", "recordDay"]]) 
df2 = pandas.DataFrame(numpy.random.randn(3, 4), columns=[["day", "number", "id", "recordDay"]]) 
df3 = pandas.DataFrame(numpy.random.randn(3, 4), columns=[["day", "number", "id", "recordDay"]]) 

df_dict={"data_frame1":df1, "data_frame2": df2, "data_frame3": df3} 

for name, df in df_dict.items(): 
    #get the id and recordDay values from each df 
    df_id=df['id'].iloc[0] 
    df_record_day=df['recordDay'].iloc[0] 

    #generate a unique file name based on the id and record 
    file_name="id_"+str(df_id)+"_"+str(df_record_day)+".csv" 

    #create the CSV 
    df.to_csv(file_name, index = False, data_format = '%Y-%m-%d') 

それとも、代わりに辞書のアレイのリストを使用することができます

df_list=[df1, df2, df3] 

for df in df_list: 
    #get the id and recordDay values from each df 
    df_id=df['id'].iloc[0] 
    df_record_day=df['recordDay'].iloc[0] 

    #generate a unique file name based on the id and record 
    file_name="id_"+str(df_id)+"_"+str(df_record_day)+".csv" 

    #create the CSV 
    df.to_csv(file_name, index = False, data_format = '%Y-%m-%d') 
+0

ありがとうございます! 'dictionary'を' list'に変換し、上記のコードを実行してcsvファイルを保存します。それはかなりうまくいく。ありがとうございました。 – Peggy

+0

辞書を使って回答を変更しました - あなたのdfsがすでに辞書に入っていることを認識するのに十分注意しました – nanselm2

+0

@ nanselms2 'TypeError:文字列インデックスは整数でなければなりません' df_id = df [ 'id'] .iloc [0] 'を使用します。 – Peggy