Python如何通过for循环批量导出月份DataFrame为csv并自动提取月份列表
问题1:批量导出DataFrame为CSV的代码修正
错误原因
你写的df_{}.format(i)是非法语法,Python无法直接将字符串格式化结果作为变量名调用,需要通过变量空间映射或者预存字典的方式实现动态变量调用。
可行解决方案
方案1:直接通过全局变量空间调用(快速适配你的现有代码)
import pandas as pd months = ['may','jun','jul','aug'] for i in months: globals()[f'df_{i}'].to_csv(f'raw_master_{i}.csv', encoding='utf_8_sig')
注:如果你的DataFrame是在函数内部定义的,把globals()替换为locals()即可
方案2:优先推荐:将DataFrame存入字典后批量操作
这种写法结构更清晰,后续对月份数据做其他批量操作也更方便:
# 先把所有DataFrame存入字典 df_dict = { 'may': df_may, 'jun': df_jun, 'jul': df_jul, 'aug': df_aug } # 批量导出 for month, df in df_dict.items(): df.to_csv(f'raw_master_{month}.csv', encoding='utf_8_sig')
问题2:自动提取当前环境中的月份列表
可以通过遍历当前变量名,筛选符合规则的DataFrame来自动生成months列表,无需手动定义:
import pandas as pd months = [] # 遍历全局变量的键名 for var_name in globals().keys(): # 筛选符合df_xxx格式、且是pandas DataFrame类型的变量 if var_name.startswith('df_') and isinstance(globals()[var_name], pd.DataFrame): # 提取月份部分 months.append(var_name.split('_')[1]) # 输出得到的months就是['may','jun','jul','aug'] print(months)
注:如果当前环境有其他df_开头的DataFrame不想纳入范围,可以加额外的字符串判断过滤即可
内容的提问来源于stack exchange,提问作者AmanArora
相关产品推荐
相关产品推荐

