【问题标题】:How to save a list of dataframes while producing them iteratively?如何在迭代生成数据帧时保存它们的列表?
【发布时间】:2020-01-20 15:09:58
【问题描述】:

我有很多文件夹,根据某些标准,我从中生成不同的数据帧。 结果,循环每次迭代都会产生一个数据帧。我想将它们全部保存在不同的 .plk 文件中。 我只是在使用它:

df.to_pickle('df')

但它只保存最后一个。我需要类似的东西:

df.to_pickle(df[i].plk')

i 用于每次迭代。

【问题讨论】:

  • 请详细说明正在使用的数据和预期结果。仅提供信息很难。

标签: python loops dataframe iteration pickle


【解决方案1】:

这就是我的管理方式: 首先创建一个空列表,您将在其中附加您创建的每个数据框:

df_appender = []

假设我生成了一个列表ids,其中包含将用于迭代和生成您想要的每个数据帧的唯一值:

ids = ['A','B','C','D','E']

这里是循环发生的地方,以及你想应用什么逻辑来创建新的数据帧并附加它们:

for i in range(len(ids)):
    dfx = df[df['id'] == ids[i]] 
    dfx = dfx.sort_values(['day'],ascending=[True])
    dfx = dfx.drop_duplicates(['day'],keep='last')
    df_appender.append(dfx)
    print(i/len(ids))

现在您有了一个包含每次迭代的数据框的列表,最后,如果您想将它们连接到一个大数据框,您可以这样做:

final_df = pd.concat(df_appender,ignore_index=True)

【讨论】:

  • 谢谢你的贡献,伙计。我赞成上面的评论,因为它比你的简单。无论如何,我感谢您的时间和精力。 :)
【解决方案2】:

只需替换你的这一行

df.to_pickle(df[i].plk')

df.to_pickle(f"df_{i}".plk)

它将您的文件保存在 df_1.plk、df_2.plk、df_3.plk 等上

【讨论】:

    【解决方案3】:

    作为贡献,我做到了,并且奏效了:

    df[i].to_pickle(str(i)+'some_name.plk') 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 2013-08-13
      相关资源
      最近更新 更多