Tôi có một DataFrame động hoạt động tốt, nhưng khi không có dữ liệu nào được thêm vào DataFrame thì tôi gặp lỗi. Và do đó tôi cần một giải pháp để tạo một DataFrame trống chỉ có các tên cột.
Bây giờ tôi có một cái gì đó như thế này:
df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted.
PS: Điều quan trọng là các tên cột vẫn sẽ xuất hiện trong DataFrame.
Nhưng khi tôi sử dụng nó như thế này, tôi nhận được một cái gì đó như thế:
Index([], dtype='object')
Empty DataFrame
Phần "Khung dữ liệu trống" là tốt! Nhưng thay vì điều Index tôi vẫn cần hiển thị các cột.
Biên tập:
Một điều quan trọng mà tôi phát hiện ra: Tôi đang chuyển đổi DataFrame này thành PDF bằng Jinja2, do đó, tôi đang gọi một phương thức để xuất nó thành HTML như thế sau:
df.to_html()
Đây là nơi mà các cột bị mất tôi nghĩ.
Edit2: Nói chung, tôi đã làm theo ví dụ này: http://pbpython.com/pdf-reports.html . Các css cũng từ liên kết. Đó là những gì tôi làm để gửi khung dữ liệu tới 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"])
Chỉnh sửa 3:
Nếu tôi in ra khung dữ liệu ngay sau khi tạo, tôi sẽ nhận được thông tin sau:
[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: []
Điều đó có vẻ hợp lý, nhưng nếu tôi in ra các mẫu:
'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>'
Và dường như các cột đã bị mất.
E4: Nếu tôi in ra như sau:
print(df.to_html())
Tôi đã nhận được kết quả sau đây:
<table border="1" class="dataframe">
<tbody>
<tr>
<td>Index([], dtype='object')</td>
<td>Empty DataFrame</td>
</tr>
</tbody>
</table>