2016-06-21 8 views
2

Ich habe eine Reihe von Datenrahmen mit Verkaufsdaten für verschiedene Marken. Ich möchte eine Funktion erstellen, die aus den markenspezifischen Datenframes letztendlich Excel-Dateien macht. Alles funktioniert einwandfrei, außer dass ich Excel-Dateien mit eindeutigen Namen als Ausgabe erstellen muss. Hier ist, was ich derzeit haben:Referenz DataFrame Name in einer Funktion (Pandas, Python3)

def brandOverview(b): 
    brandWriter = pd.ExcelWriter("Brand.xlsx", engine='xlsxwriter') 
    b.to_excel(brandWriter, sheet_name='Data') 
    brandWriter.save() 

Dies funktioniert, aber letztlich würde Ich mag „Brand.xlsx“ eindeutig für den Datenrahmen genannt werden, die in die Funktion gesetzt wird (b). Wenn mein Dataframe beispielsweise "Adidas" heißt, würde brandOverview (Adidas) eine Datei namens "Adidas.xlsx" ausgeben.

Ich habe versucht, zu verwenden:

brandWriter = pd.ExcelWriter((str(b)+".xlsx"), engine='xlsxwriter') 

Von dem, was ich entziffern kann, dies erzeugt einen String aller Daten in den Datenrahmen, letztlich einen Fehler verursacht.

Antwort

2

Ihr Versuch ist sehr nahe. Sie müssen nur str(b) ändern und es durch etwas ersetzen, das in diesem Fall 'Adidas' zurückgibt und was auch immer die Marke für irgendeinen anderen Fall ist. Sie haben keine Angaben zur Struktur der Datenrahmen gemacht. Damit dies funktioniert, müssen Sie jedoch auf 'Adidas' irgendwo in b zugreifen können. Wenn es nicht dort ist, können Sie nicht tun dies tun. Wenn es da ist, dann kannst du es. Wenn Sie diese Daten nicht selbst erstellt haben, wissen Sie möglicherweise nicht, ob und wo sie sind. Woher wissen Sie, dass dieser Datenrahmen für 'Adidas' ist. Ist es in einem Wörterbuch? Wenn ja, dann sollten Sie vielleicht das Wörterbuch Schlüssel mit dem Datenrahmen übergeben, wie folgt aus:

def brandOverview(b, name): 
    brandWriter = pd.ExcelWriter(name + ".xlsx", engine='xlsxwriter') 
    b.to_excel(brandWriter, sheet_name='Data') 
    brandWriter.save() 

Vielleicht ist der Markenname im Namensattribut des Index:

def brandOverview(b): 
    brandWriter = pd.ExcelWriter(b.index.name + ".xlsx", engine='xlsxwriter') 
    b.to_excel(brandWriter, sheet_name='Data') 
    brandWriter.save() 

Vielleicht ist der Markenname im Namen Attribut der Spalten:

def brandOverview(b): 
    brandWriter = pd.ExcelWriter(b.columns.name + ".xlsx", engine='xlsxwriter') 
    b.to_excel(brandWriter, sheet_name='Data') 
    brandWriter.save() 

ersten Spaltenname:

def brandOverview(b): 
    brandWriter = pd.ExcelWriter(b.columns[0] + ".xlsx", engine='xlsxwriter') 
    b.to_excel(brandWriter, sheet_name='Data') 
    brandWriter.save() 

Letztendlich haben Sie nicht genug Informationen zur Verfügung gestellt. Dies sollte Ihnen helfen, aber ich würde erwarten, dass Sie Beispieldaten für uns weiter verfolgen.

+0

Dies gab mir genug Verständnis für die Arbeit. Letztendlich verwendete ich: 'brandWriter = pd.ExcelWriter (b.iloc [0] [0] +" .xlsx ", engine = 'xlsxwriter')' da dies ein Ort ist, an dem ich die Zeichenfolge ziehen kann, die ich brauche. Vielen Dank! – Stephen