Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如何使用不同的文件名保存CSV文件?_Python_Csv_Pandas_Export To Csv - Fatal编程技术网

Python-如何使用不同的文件名保存CSV文件?

Python-如何使用不同的文件名保存CSV文件?,python,csv,pandas,export-to-csv,Python,Csv,Pandas,Export To Csv,我有5个数据框,其中包含“day”、“number”、“id”、“recordDay”列,我将所有5个数据框放在一个字典中。我想在5个CSV文件中保存5个数据帧,文件名基于“id”和“recordDay”。下面是dataframe1和dataframe2的示例 df1 df2 day number id recordDay day number id recor

我有5个数据框,其中包含“day”、“number”、“id”、“recordDay”列,我将所有5个数据框放在一个字典中。我想在5个CSV文件中保存5个数据帧,文件名基于“id”和“recordDay”。下面是dataframe1和dataframe2的示例

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
是否可以使用以下文件名保存5个CSV文件:“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”会更好

我使用了以下代码,但它只保存了一个CSV文件

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

迭代字典-使用.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')

为什么您认为这样可以保存多个文件?为什么不在将数据帧放入字典之前保存它们。df{number}.to_csv'{file_name}.csv',index=False,data_format='%Y-%m-%d非常感谢!!我将字典转换成一个列表,并运行上面的代码来保存csv文件。它工作得很好。谢谢。我只是用字典修改了答案——我读得不够仔细,没有意识到你的dfs已经在使用中了dictionary@nanselms2我刚刚遇到了TypeError:在使用上述编码时,字符串索引必须是df_id=df['id'].iloc[0]行的整数。好的,我不确定您的字典是如何设置的,如果数据帧本身是值,那么您需要使用.items-请参阅我更改了答案以反映列表和字典-列表可能更容易/更有意义。