python - 如何在迭代生成数据帧时保存它们的列表?
问题描述
我有很多文件夹,根据某些标准,我从中生成不同的数据框。结果,循环每次迭代都会产生一个数据帧。我想将它们全部保存在不同的 .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)
推荐阅读
- r - R给定数据框列表,如何向数据框中的所有行添加新列
- html - 悬停项目在移动设备上始终处于活动状态
- regex - java.util.regex.PatternSyntaxException:字符串 +91 的悬挂元字符“+”
- java - 如何使用过滤器来处理 servlet 中抛出的异常
- javascript - 我想创建自己的标签,例如
, - ms-access - Microsoft Access - 登录
- audio - 带有音频和视频过滤器的 ffplay / ffmpeg
- java - 在java中添加三个不同的char作为java变量并获取一个数字
- android - 通过终端命令在Android上打开振动
- javascript - 删除 VuetifyJS v-tabs 组件的标头