ฉันมี DataFrame แบบไดนามิกซึ่งทำงานได้ดี แต่เมื่อไม่มีข้อมูลที่จะเพิ่มลงใน DataFrame ฉันได้รับข้อผิดพลาด ดังนั้นฉันจึงต้องการโซลูชันในการสร้าง DataFrame ที่ว่างเปล่าที่มีเฉพาะชื่อคอลัมน์
ตอนนี้ฉันมีสิ่งนี้:
df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted.
PS: มันเป็นสิ่งสำคัญที่ชื่อคอลัมน์จะยังคงปรากฏใน DataFrame
แต่เมื่อฉันใช้มันแบบนี้ฉันจะได้ผลลัพธ์ดังนี้:
Index([], dtype='object')
Empty DataFrame
ส่วน "Data Data ว่างเปล่า" เป็นสิ่งที่ดี! แต่แทนที่จะเป็นสิ่งดัชนีฉันต้องยังคงแสดงคอลัมน์
แก้ไข:
สิ่งสำคัญที่ฉันค้นพบ: ฉันกำลังแปลง DataFrame นี้เป็น PDF โดยใช้ Jinja2 ดังนั้นฉันจึงเรียกใช้เมธอดเพื่อส่งออกเป็น HTML ก่อนเช่นนั้น:
df.to_html()
ฉันคิดว่าคอลัมน์นี้หายไปไหน
Edit2: โดยทั่วไปผมทำตามตัวอย่างนี้http://pbpython.com/pdf-reports.html css นั้นมาจากลิงค์ นั่นคือสิ่งที่ฉันทำเพื่อส่ง dataframe ไปยัง 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"])
edit3:
ถ้าฉันพิมพ์ดาต้าเฟรมออกมาทันทีหลังจากสร้างฉันจะได้รับ followin:
[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: []
ดูเหมือนจะสมเหตุสมผล แต่ถ้าฉันพิมพ์ 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>'
และดูเหมือนว่าคอลัมน์หายไปแล้ว
E4: ถ้าฉันพิมพ์สิ่งต่อไปนี้:
print(df.to_html())
ฉันได้รับผลลัพธ์ต่อไปนี้แล้ว:
<table border="1" class="dataframe">
<tbody>
<tr>
<td>Index([], dtype='object')</td>
<td>Empty DataFrame</td>
</tr>
</tbody>
</table>