python - 如何在迭代生成数据帧时保存数据帧列表?

标签 python loops dataframe iteration pickle

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

df.to_pickle('df')

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

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

其中 i 代表每次迭代。

最佳答案

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

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)

关于python - 如何在迭代生成数据帧时保存数据帧列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58013449/

相关文章:

python - 如何使用 sqlalchemy 轻松初始化所有值为 null 的新对象

python - Pandas groupby 和聚合重复项

python - CSRF验证失败。请求被中止。 (禁止(403)) Django

python - 合并 reportlab 表中的列

c - 哪种是编写循环的最佳方式?

bash - 打破无限循环

pandas - 使用 pandas 中其他列的值名称创建新列

python - 如何在 Dash Python 中将大数据存储为全局变量?

javascript - 如何检查mongodb中特定字段的文档是否存在

python - 如何反向循环?