将数据框保存到多个 CSV,保留数据框名称

Posted

技术标签:

【中文标题】将数据框保存到多个 CSV,保留数据框名称【英文标题】:Save dataframes to multiple CSVs retaining dataframe name 【发布时间】:2021-05-16 04:22:31 【问题描述】:

如何在通用代码中将多个数据框导出到具有相同标题的 CSV?

我试过了:

dframes_list = [economy, finance, language]

for i, df in enumerate(dframes_list, 1):
    filename_attempt1 = ".csv".format(i)
    filename_attempt2= f"i.csv"
    df.to_save(filename_attempt2)

预期输出:

file saved: "economy.csv"
file saved: "finance.csv"
file saved: "language.csv"

【问题讨论】:

dframes_list = [economy, finance, language]是如何生成的? 【参考方案1】:

我认为在python中is strongly not recommended创建字符串变量,因为那时生成字符串不是trivial。

那么最好为字符串中的名称创建另一个列表并使用zip

dframes_list = [economy, finance, language]
names = ['economy','finance','language']
for i, df in zip(names, dframes_list):
    filename_attempt1 = "df_.csv".format(i)

另一个想法是创建 DataFrames 的字典:

dframes_dict = 'economy': economy, 'finance': finance, 'language': language
for i, df in dframes_dict.items():
    filename_attempt1 = "df_.csv".format(i)

如果需要使用DataFrames 的字典,请使用:

 for k, v in dframes_dict.items():

     v = v.set_index('date')
     #another code for processing each DataFrame

     dframes_dict[k] = v

【讨论】:

谢谢。如何更新数据框或至少更新字典键?如果我在 forloop 中执行 df = df.set_index('date'),那么当我在 forloop 之外运行时没有任何变化:dframes_list['economy'] @asd - 稍等。 @asd - 添加到答案中,您需要在最后一步设置虚构的 dfs。【参考方案2】:

如果您在笔记本上执行此操作,则可以使用 hack 搜索 locals(),并且可以使用正则表达式匹配应返回字符串值的 'dframes_list = [.+]`

'dframes_list = [economy, finance, language]'

然后您可以进行替换,直到您到达“经济、金融、语言”,此时您可以拆分并获得一个列表。

colab 版本的工作方式是这样的,

temp_local = dict(locals())
data = 
for k,v in temp_local.items():
  try:
    if re.match('dframes_list = \[.+\]', v):
      data[k] = v
      print(k, v)
  except:
    pass

那么,

names = re.findall('\[.+\]', data[key])[0].replace('[', '').replace(']', '').split(',')

其中key 已从data 字典中识别出来。

不建议这样做。

【讨论】:

以上是关于将数据框保存到多个 CSV,保留数据框名称的主要内容,如果未能解决你的问题,请参考以下文章

将熊猫数据框保存到csv时如何保留numpy数组

将 pandas 数据框保存到 csv 时,如何保留 columns.name?

将 pandas 数据框保存到 csv 时,如何保留 columns.name?

将熊猫数据框保存为 csv 并覆盖现有文件

将 Pandas 数据框的选择保存到 csv [重复]

在数据框中迭代并保存每个股票历史数据,而无需在 CSV 中下载