Saya memiliki DataFrame dinamis yang berfungsi dengan baik, tetapi ketika tidak ada data untuk ditambahkan ke dalam DataFrame saya mendapatkan kesalahan. Dan karena itu saya membutuhkan solusi untuk membuat DataFrame kosong dengan hanya nama kolom.
Untuk saat ini saya memiliki sesuatu seperti ini:
df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted.
PS: Penting bahwa nama kolom masih akan muncul dalam DataFrame.
Tetapi ketika saya menggunakannya seperti ini saya mendapatkan sesuatu seperti itu sebagai hasilnya:
Index([], dtype='object')
Empty DataFrame
Bagian "Empty DataFrame" bagus! Tapi alih-alih hal Indeks saya harus tetap menampilkan kolom.
Edit:
Suatu hal penting yang saya temukan: Saya mengubah DataFrame ini ke PDF menggunakan Jinja2, jadi karena itu saya memanggil metode untuk pertama-tama output ke HTML seperti itu:
df.to_html()
Di sinilah kolom tersesat saya pikir.
Sunting2: Secara umum, saya mengikuti contoh ini: http://pbpython.com/pdf-reports.html . Css juga dari tautan. Itulah yang saya lakukan untuk mengirim kerangka data ke PDF:
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"])
Sunting3:
Jika saya mencetak kerangka data tepat setelah pembuatan saya mendapatkan tindak lanjutnya:
[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: []
Tampaknya masuk akal, tetapi jika saya mencetak template_vars:
'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>'
Dan sepertinya kolom sudah hilang.
E4: Jika saya mencetak yang berikut ini:
print(df.to_html())
Saya sudah mendapatkan hasil berikut:
<table border="1" class="dataframe">
<tbody>
<tr>
<td>Index([], dtype='object')</td>
<td>Empty DataFrame</td>
</tr>
</tbody>
</table>