2017-06-13 15 views
14

Ich habe eine dynamische DataFrame, die gut funktioniert, aber wenn keine Daten in den DataFrame hinzugefügt werden, erhalte ich einen Fehler. Und deshalb brauche ich eine Lösung, um einen leeren Datenrahmen mit nur den Spaltennamen zu erstellen.Pandas erstellen leere Datenrahmen mit nur Spaltennamen

Denn jetzt habe ich so etwas wie diese:

df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted. 

PS: Es ist wichtig, dass die Spaltennamen noch in einem Datenrahmen erscheinen würden.

Aber wenn ich es so verwenden bekomme ich so etwas als Ergebnis:

Index([], dtype='object') 
Empty DataFrame 

Das „Empty Dataframe“ Teil ist gut! Aber statt der Index-Sache muss ich noch die Spalten anzeigen.

Edit:

Eine wichtige Sache, die ich herausgefunden hat: Ich habe diesen Datenrahmen in einem PDF-Umwandlung am Jinja2 verwenden, so deshalb, ein Verfahren zum ersten Ausgang Ich rufe es so, dass in HTML:

df.to_html() 

Hier gehen die Spalten verloren, denke ich.

Edit2: Im Allgemeinen folgte ich diesem Beispiel: http://pbpython.com/pdf-reports.html. Das CSS stammt auch von der Verbindung. Das ist, was ich tue, um den Datenrahmen in das PDF senden:

env = Environment(loader=FileSystemLoader('.')) 
template = env.get_template("pdf_report_template.html") 
template_vars = {"my_dataframe": df.to_html()} 

html_out = template.render(template_vars) 
HTML(string=html_out).write_pdf("my_pdf.pdf", stylesheets=["pdf_report_style.css"]) 

Edit3:

Wenn ich den Datenrahmen nach der Erstellung erhalte ich die followin rechts ausdrucken:

vernünftig
[0 rows x 9 columns] 
Empty DataFrame 
Columns: [column_a, column_b, column_c, column_d, 
column_e, column_f, column_g, 
column_h, column_i] 
Index: [] 

Das scheint , aber wenn ich die template_vars ausdrücke:

'my_dataframe': '<table border="1" class="dataframe">\n <tbody>\n <tr>\n  <td>Index([], dtype=\'object\')</td>\n  <td>Empty DataFrame</td>\n </tr>\n </tbody>\n</table>' 

Und es scheint dass die Spalten schon fehlen.

E4: Wenn ich folgendes ausdrucken:

print(df.to_html()) 

ich folgendes Ergebnis schon:

<table border="1" class="dataframe"> 
    <tbody> 
    <tr> 
     <td>Index([], dtype='object')</td> 
     <td>Empty DataFrame</td> 
    </tr> 
    </tbody> 
</table> 
+0

die für Sie unten jetzt funktioniert? Wenn nicht, sollten Sie weitere Informationen über Ihre Umgebung bereitstellen, z. B. Python-Version, Pandas-Version usw. –

+0

Ich benutze Python v3.4, Pandas v0.13.1 –

+1

Hallo Eerik, ich kann nicht reproduzieren, was Sie in E4 haben . Wenn ich das tue, sieht der Ausdruck genau so aus, wie ich unten habe. Könntest du deine Pandas Version aktualisieren? Denn dein ist ziemlich alt (ich bin bei 0,20.1). –

Antwort

27

Was meinst du damit du bekommst dies "als Ergebnis". Sie können einen leeren Datenrahmen entweder mit Spaltennamen oder einen Index erstellen:

In [4]: import pandas as pd 
In [5]: df = pd.DataFrame(columns=['A','B','C','D','E','F','G']) 
In [6]: df 
Out[6]: 
Empty DataFrame 
Columns: [A, B, C, D, E, F, G] 
Index: [] 

Oder

In [7]: df = pd.DataFrame(index=range(1,10)) 
In [8]: df 
Out[8]: 
Empty DataFrame 
Columns: [] 
Index: [1, 2, 3, 4, 5, 6, 7, 8, 9] 

Edit: Auch nach Änderung der .to_html, kann ich nicht reproduzieren.Dies:

df = pd.DataFrame(columns=['A','B','C','D','E','F','G']) 
df.to_html('test.html') 

Produziert:

<table border="1" class="dataframe"> 
    <thead> 
    <tr style="text-align: right;"> 
     <th></th> 
     <th>A</th> 
     <th>B</th> 
     <th>C</th> 
     <th>D</th> 
     <th>E</th> 
     <th>F</th> 
     <th>G</th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 
+0

Ich habe die Hauptfrage bearbeitet, wenn das hilft. E: Nochmals bearbeitet. –

0

Suchen Sie so etwas?

+0

Das ist, was ich bereits habe, bitte sehen Sie meine bearbeitete Frage –

+0

https://stackoverflow.com/questions/33155776/best-way-to-export-pandas-df-into-a-pdf-file-using-python – Linda

+0

Auch Ich verliere meine Spaltennamen nicht, wenn ich es versuchte. Es ist in einem HTML-Tabellenformat. – Linda

Verwandte Themen