J'ai une dynamique DataFrame qui fonctionne bien, mais quand il n'y a pas de données pour être ajouté dans le DataFrame j'obtiens une erreur. Et donc j'ai besoin d'une solution pour créer un vide DataFrame avec seulement les noms de colonne.
Pour l'instant j'ai quelque chose comme ceci:
df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted.
PS: Il est important que les noms de colonne semble toujours dans un DataFrame.
Mais quand je l'utilise comme cela je reçois quelque chose comme ça comme résultat:
Index([], dtype='object')
Empty DataFrame
Le "Vide DataFrame" la partie est du bon! Mais au lieu de l'Index, j'ai besoin de toujours afficher les colonnes.
Edit:
Une chose importante que j'ai trouvé: je suis de la conversion de cette DataFrame d'un fichier PDF à l'aide Jinja2, donc je suis à l'appel d'une méthode à la première sortie au format HTML comme ceci:
df.to_html()
C'est là que les colonnes se perdre je pense.
Edit2: En général, j'ai suivi cet exemple: http://pbpython.com/pdf-reports.html. Le css est également à partir du lien. C'est ce que je fais pour envoyer le dataframe au format 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:
Si j'ai imprimer le dataframe juste après la création-je obtenir ce qui suit:
[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: []
Cela semble raisonnable, mais si j'ai imprimer le 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>'
Et il semble que les colonnes sont manquantes déjà.
E4: Si j'ai l'impression de la manière suivante:
print(df.to_html())
J'obtiens le résultat suivant déjà:
<table border="1" class="dataframe">
<tbody>
<tr>
<td>Index([], dtype='object')</td>
<td>Empty DataFrame</td>
</tr>
</tbody>
</table>