尝试自学编码以自动化工作中一些繁琐的任务。对于任何无意的无知,我深表歉意。
我在 pandas (python 3.x) 中创建了数据框。我想将每个数据框打印到不同的 Excel 工作表中。这是我的 2 个数据帧,它工作完美,但我想缩放它以循环遍历数据帧列表,以便我可以使其更加动态。
writer = pandas.ExcelWriter("MyData.xlsx", engine='xlsxwriter')
Data.to_excel(writer, sheet_name="Data")
ByBrand.to_excel(writer, sheet_name="ByBrand")
writer.save()
很简单,但是当需要创建 50 多个工作表时,就会变得乏味。
这是我尝试过的,但没有成功:
writer = pandas.ExcelWriter("MyData.xlsx", engine='xlsxwriter')
List = [Data , ByBrand]
for i in List:
i.to_excel(writer, sheet_name= i)
writer.save()
我认为问题在于 Sheet_name 字段必须是字符串,因为它按原样会产生错误。但是,如果我将sheet_name =“i”,它只会使用Data中的数据创建一张名为“i”的工作表,但不会迭代到ByBrand。另外,如果工作表未命名为相应的数据框,那么 Excel 文件将是一场噩梦,因此请不要对编号工作表等内容提出建议。
预先非常感谢您,这个网站对我的编码之旅非常宝贵。
-Stephen
从绳子上脱下来更容易'Data'
到值Data
比相反。您可以使用locals()['Data']
访问与字符串名称为的变量关联的值'Data'
:
import pandas as pd
writer = pd.ExcelWriter("MyData.xlsx", engine='xlsxwriter')
seq = ['Data', 'ByBrand']
for name in seq:
df = locals()[name]
df.to_excel(writer, sheet_name=name)
writer.save()
locals() https://docs.python.org/3/library/functions.html#locals返回包含当前作用域的局部变量的只读字典。globals() https://docs.python.org/3/library/functions.html#globals返回包含当前作用域的全局变量的字典。 (因此,如果Data
and ByBrand
在全局命名空间而不是本地命名空间中定义,使用globals()
代替locals()
.)
另一种选择是在字典中收集数据帧。不要为每个 DataFrame 创建一个变量,而是创建一个字典,并让键为工作表名称,将值设为 DataFrame:
import pandas as pd
dfs = dict()
dfs['Data'] = ...
dfs['ByBrand'] = ...
writer = pd.ExcelWriter("MyData.xlsx", engine='xlsxwriter')
for name, df in dfs.items():
df.to_excel(writer, sheet_name=name)
writer.save()
我认为这是更好的选择,因为它不需要像locals()
or globals()
。第二种方法仅按照字典的预期使用方式使用字典:将键映射到值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)