将数据框保存到多个 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)
如果需要使用DataFrame
s 的字典,请使用:
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,保留数据框名称的主要内容,如果未能解决你的问题,请参考以下文章
将 pandas 数据框保存到 csv 时,如何保留 columns.name?