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的字典。 (因此,如果DataByBrand在全局名称空间而不是本地名称空间中定义,请使用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()这样的自检工具。 这第二种方法只是使用字典的方式来使用字典:将键映射到值。