我有一堆数据框,其中包含不同品牌的销售数据。我想创建一个函数,最终从品牌特定的数据框中生成excel文件。一切正常,但我需要将唯一命名的excel文件作为输出。这是我现在拥有的:
<a>
这样可行,但最终我希望将“Brand.xlsx”命名为放入函数(b)的数据框。例如,如果我的数据框名为“Adidas”,则brandOverview(Adidas)将输出名为“Adidas.xlsx”的文件。
我试图使用:
def brandOverview(b):
brandWriter = pd.ExcelWriter("Brand.xlsx", engine='xlsxwriter')
b.to_excel(brandWriter, sheet_name='Data')
brandWriter.save()
根据我的解释,这会在数据框中生成一串所有数据,最终导致错误。
答案 0 :(得分:2)
你的尝试非常接近。您只需要更改str(b)
并将其替换为在这种情况下返回'Adidas'
的内容以及任何其他情况下的品牌。您没有提供有关数据帧结构的任何信息。但是,为了实现此目的,您需要能够在'Adidas'
中的某个位置访问b
。如果它不在那里,你不能这样做。如果它在那里,那么你可以。如果您自己没有生成这些数据框,那么您可能不知道它是否以及在何处。您如何知道此数据框适用于'Adidas'
。它在字典里吗?如果是这样,那么也许您应该使用数据框传递字典键,如下所示:
def brandOverview(b, name):
brandWriter = pd.ExcelWriter(name + ".xlsx", engine='xlsxwriter')
b.to_excel(brandWriter, sheet_name='Data')
brandWriter.save()
品牌名称可能在索引的名称属性中:
def brandOverview(b):
brandWriter = pd.ExcelWriter(b.index.name + ".xlsx", engine='xlsxwriter')
b.to_excel(brandWriter, sheet_name='Data')
brandWriter.save()
也许品牌名称位于列的名称属性中:
def brandOverview(b):
brandWriter = pd.ExcelWriter(b.columns.name + ".xlsx", engine='xlsxwriter')
b.to_excel(brandWriter, sheet_name='Data')
brandWriter.save()
第一列名称:
def brandOverview(b):
brandWriter = pd.ExcelWriter(b.columns[0] + ".xlsx", engine='xlsxwriter')
b.to_excel(brandWriter, sheet_name='Data')
brandWriter.save()
最终,您没有提供足够的信息。这应该可以帮到你,但我希望你能跟进我们的样本数据,以便我们进一步提供帮助。