Ich habe einen dynamischen DataFrame, der einwandfrei funktioniert, aber wenn dem DataFrame keine Daten hinzugefügt werden müssen, wird eine Fehlermeldung angezeigt. Und deshalb brauche ich eine Lösung, um einen leeren DataFrame nur mit den Spaltennamen zu erstellen.
Im Moment habe ich so etwas:
df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted.
PS: Es ist wichtig, dass die Spaltennamen weiterhin in einem DataFrame angezeigt werden.
Aber wenn ich es so benutze, bekomme ich so etwas als Ergebnis:
Index([], dtype='object')
Empty DataFrame
Der Teil "Leerer DataFrame" ist gut! Aber anstelle der Index-Sache muss ich immer noch die Spalten anzeigen.
Bearbeiten:
Eine wichtige Sache, die ich herausgefunden habe: Ich konvertiere diesen DataFrame mit Jinja2 in ein PDF, daher rufe ich eine Methode auf, um ihn zuerst wie folgt in HTML auszugeben:
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 ist auch vom Link. Das mache ich, um den Datenrahmen an das PDF zu 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 direkt nach der Erstellung ausdrucke, erhalte ich Folgendes:
[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 vernünftig, aber wenn ich die template_vars ausdrucke:
'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 bereits fehlen.
E4: Wenn ich Folgendes ausdrucke:
print(df.to_html())
Ich bekomme schon folgendes Ergebnis:
<table border="1" class="dataframe">
<tbody>
<tr>
<td>Index([], dtype='object')</td>
<td>Empty DataFrame</td>
</tr>
</tbody>
</table>
Antworten:
Sie können einen leeren DataFrame mit Spaltennamen oder einem Index erstellen:
Oder
Bearbeiten: Auch nach Ihrer Änderung mit der .to_html kann ich nicht reproduzieren. Dies:
Produziert:
quelle
Suchen Sie so etwas?
quelle
df.to_html()
hat einen Spaltenparameter.Übergeben Sie einfach die Spalten in die
to_html()
Methode.quelle