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>
die für Sie unten jetzt funktioniert? Wenn nicht, sollten Sie weitere Informationen über Ihre Umgebung bereitstellen, z. B. Python-Version, Pandas-Version usw. –
Ich benutze Python v3.4, Pandas v0.13.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). –