【问题标题】:What's the most efficient way to export multiple pandas dataframes to csv files?将多个熊猫数据框导出到 csv 文件的最有效方法是什么?
【发布时间】:2021-09-22 08:23:34
【问题描述】:

我有多个 pandas 数据框:

df1
df2
df3

我想将它们全部导出为 csv 文件。

df1.to_csv('df1.csv', index = False)
df2.to_csv('df2.csv', index = False)
df3.to_csv('df3.csv', index = False)

最有效的方法是什么?

def printToCSV(number):
    num = str(num)
    csvTemp = "df99.csv"
    csv = csvTemp.replace('99',num)
    dfTemp = "df99"
    dfString = dfTemp.replace('99',num)
    #i know i cant use the .to_csv function on a string
    #but i dont know how iterate through different dataframes
    dfString.to_csv(csv, index = False)

for i in range(1,4):
    printToCSV(i)

如何调用不同的数据框进行导出?

【问题讨论】:

  • 使用dict,比如df_dict = {"df1": df1, "df2": df2, ...},然后你可以使用dfString作为dict键:df_dict[dfString]得到df,然后是df_dict[dfString].to_csv(...)
  • 同意字典 - 去吧。

标签: python pandas dataframe


【解决方案1】:

您可以将它们全部添加到列表中:

list_of_dataframes = [df1, df2, df3]

然后您可以使用 enumerate 遍历列表,以保持对您正在编写的数据帧的计数,使用 f 字符串作为文件名:

for count, dataframe in enumerate(list_of_dataframes):
    dataframe.to_csv(f"dataframe_{count}.csv", index=False)

【讨论】:

    【解决方案2】:

    当您创建数据框时,您可以将它们存储在合适的数据结构(如列表)中,当您想要创建 csv 时,您可以使用 map 并执行相同操作。

    dfs = []
    for i in range(10):
        dfs.append(DataFrame())
    
    result = [dfs[i].to_csv(f'df{i}') for i in range(10)]
    

    【讨论】:

      【解决方案3】:

      如果您想坚持使用函数方法,请使用:

      df_dict = {"df1": df1, "df2": df2, "df3": df3}
      
      
      def printToCSV(num):
          df_dict[f"df{num}"].to_csv(f"df{num}.csv", index=False)
      
      printToCSV(1) # will create "df1.csv"
      

      但是,如果您想提高效率,我建议使用df 列表(正如@vtasca 建议的那样):

      df_list = [df1, df2, df3]
      
      for num, df in enumerate(df_list): # this will give you a number (starting from 0) and the df, in each loop
          df.to_csv(f"df{num}.csv", index=False)
      

      或使用dict:

      df_dict = {"df1": df1, "df2": df2, "df3": df3}
      
      for name, df in df_dict.items():
          df.to_csv(f"{name}.csv", index=False)
      

      【讨论】:

        猜你喜欢
        • 2020-07-20
        • 2023-02-08
        • 2021-05-22
        • 2020-11-29
        • 2018-12-18
        • 2021-12-31
        • 1970-01-01
        • 2013-12-03
        • 2018-10-25
        相关资源
        最近更新 更多