如何在迭代生成数据帧的同时保存数据帧列表?
How to save a list of dataframes while producing them iteratively?
我有很多文件夹,我根据一些标准从中生成不同的数据帧。
因此,循环每次迭代都会生成一个数据帧。我想将它们全部保存在不同的 .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)
只需替换你的这一行
df.to_pickle(df[i].plk')
和
df.to_pickle(f"df_{i}".plk)
它会将您的文件保存在 df_1.plk、df_2.plk、df_3.plk 等
作为贡献,我做到了,而且奏效了:
df[i].to_pickle(str(i)+'some_name.plk')
我有很多文件夹,我根据一些标准从中生成不同的数据帧。 因此,循环每次迭代都会生成一个数据帧。我想将它们全部保存在不同的 .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)
只需替换你的这一行
df.to_pickle(df[i].plk')
和
df.to_pickle(f"df_{i}".plk)
它会将您的文件保存在 df_1.plk、df_2.plk、df_3.plk 等
作为贡献,我做到了,而且奏效了:
df[i].to_pickle(str(i)+'some_name.plk')