Les Pandas de créer vide DataFrame avec seulement les noms de colonnes

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 un 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 pour le 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: []

Qui 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: les

<table border="1" class="dataframe">
  <tbody>
    <tr>
      <td>Index([], dtype='object')</td>
      <td>Empty DataFrame</td>
    </tr>
  </tbody>
</table>
  • Le ci-dessous maintenant le travail pour vous? Si non, vous devez fournir plus d'informations à propos de votre environnement, telles que la version de Python, les Pandas de version, etc.
  • Je suis à l'aide de Python v3.4, les Pandas v0.13.1
  • Salut Eerik, je ne peux pas reproduire ce que vous avez en E4. Si je fais cela, l'impression ressemble tout à fait à ce que j'ai ci-dessous. Pourriez-vous mettre à jour votre pandas version? Cause votre est plutôt vieux (je suis à 0.20.1).
  • Merci, la mise à jour des Pandas travaillé!
InformationsquelleAutor E. Muuli | 2017-06-13