pandas:遍历DataFrames列表并将其导出到Excel表单
试图教自己编码,以自动化一些繁琐的工作。 我为任何无意的无知道歉。
我在pandas(python 3.x)中创build了数据框架。 我想打印每个数据框到不同的Excel表。 这里是我有2个数据框架,它的工作原理是完美的,但我想要缩放它来循环通过一个数据框架列表,这样我可以使它更加dynamic。
writer = pandas.ExcelWriter("MyData.xlsx", engine='xlsxwriter') Data.to_excel(writer, sheet_name="Data") ByBrand.to_excel(writer, sheet_name="ByBrand") writer.save()
很简单,但是当有50多张纸需要被创build时,它会变得乏味。
这是我试过的,它不起作用:
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字段必须是一个string,因为它是创build一个错误。 但是如果我把sheet_name =“i”,它只会用Data中的数据创build一个名为“i”的表单,但是不会迭代到ByBrand。 而且,如果表单没有命名为相应的数据框,那么excel文件将是一场噩梦,所以请不要对像编号表单这样的东西提出build议。
提前感谢你,这个网站对我的编程之旅来说是非常宝贵的。
-Stephen
反过来说,从string'Data'
到'Data'
比较容易。 您可以使用locals()['Data']
来访问与string名称为'Data'
的variables关联的值:
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()
返回包含当前作用域局部variables的只读字典。 globals()
返回一个包含当前作用域全局variables的字典。 (因此,如果Data
和ByBrand
在全局名称空间而不是本地名称空间中定义,请使用globals()
而不是locals()
。)
另一种select是在字典中收集dataframe。 为每个DataFrame创build一个variables,而不是为每个DataFrame创build一个variables,然后让这些键为表名和值为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()
或globals()
这样的自检工具。 这第二种方法只是使用字典的方式来使用字典:将键映射到值。