函数中的引用DataFrame名称(pandas,python3)

时间:2016-06-21 15:26:38

标签: python pandas dataframe

我有一堆数据框,其中包含不同品牌的销售数据。我想创建一个函数,最终从品牌特定的数据框中生成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()

根据我的解释,这会在数据框中生成一串所有数据,最终导致错误。

1 个答案:

答案 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()

最终,您没有提供足够的信息。这应该可以帮到你,但我希望你能跟进我们的样本数据,以便我们进一步提供帮助。