2017-06-13 13 views
14

私は動的に動作するDataFrameを持っていますが、DataFrameに追加するデータがない場合はエラーが発生します。したがって、列名のみを使用して空のDataFrameを作成するソリューションが必要です。Pandasは列名のみの空のDataFrameを作成します

df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted. 

PS:については

は今、私はこのような何かを持っていることは、列名は、まだデータフレームに表示されることが重要です。

しかし、私はこのようにそれを使用するとき、私は、結果として、そのような何かを得る:

Index([], dtype='object') 
Empty DataFrame 

「空DATAFRAME」の部分が良いです!しかし、Indexの代わりに、私はまだ列を表示する必要があります。

編集:

私が見つけた大切なこと:

:私はので、私はそれがそのようにHTMLに最初の出力にメソッドを呼んでいる、Jinja2のを使用してPDFにこのデータフレームに変換しています
df.to_html() 

これは、列が紛失してしまう場所です。

Edit2: 一般に、私はこの例に従いました:http://pbpython.com/pdf-reports.html。 CSSもリンクから来ています。

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: [] 

合理的なようだ、私はPDFへのデータフレームを送信するために行うものだが テンプレート番号を印刷すると:

'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> 
+0

を下記は今あなたのために働くのか? Pythonバージョン、Pandasバージョンなど、環境に関する詳細情報を提供する必要があります。 –

+0

Python v3.4、Pandas v0.13.1を使用しています –

+1

こんにちはEerik、私はあなたがE4に持っているものを再現できません。私がこれを行うと、以下のように印刷されます。あなたはあなたのパンダのバージョンを更新できますか?あなたの方がかなり古いです(私は0.20.1にあります)。 –

答えて

27

「結果として」とはどういう意味ですか?編集

In [4]: import pandas as pd 
In [5]: df = pd.DataFrame(columns=['A','B','C','D','E','F','G']) 
In [6]: df 
Out[6]: 
Empty DataFrame 
Columns: [A, B, C, D, E, F, G] 
Index: [] 

それとも

In [7]: df = pd.DataFrame(index=range(1,10)) 
In [8]: df 
Out[8]: 
Empty DataFrame 
Columns: [] 
Index: [1, 2, 3, 4, 5, 6, 7, 8, 9] 

:あなたは、列名またはインデックスのどちらかで空のデータフレームを作成することができます でも.to_htmlであなたの改正後、私は再現することはできません。この:

df = pd.DataFrame(columns=['A','B','C','D','E','F','G']) 
df.to_html('test.html') 

が生成されます

<table border="1" class="dataframe"> 
    <thead> 
    <tr style="text-align: right;"> 
     <th></th> 
     <th>A</th> 
     <th>B</th> 
     <th>C</th> 
     <th>D</th> 
     <th>E</th> 
     <th>F</th> 
     <th>G</th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
</table> 
+0

それが役に立つかどうか私は主な質問を編集しました。 E:もう一度編集しました。 –

0

あなたはこのような何かを探していますか?

COLUMN_NAMES=['A','B','C','D','E','F','G'] 
    df = pd.DataFrame(columns=COLUMN_NAMES) 
    df.columns 

    Index(['A', 'B', 'C', 'D', 'E', 'F', 'G'], dtype='object') 
+0

これは既に私が持っているものです。私の編集した質問をご覧ください。 –

+0

https://stackoverflow.com/questions/33155776/best-way-to-export-pandas-df-into-a-pdf-file-using-python – Linda

+0

また、私が試したときに私のカラム名を失うことはない。これはhtmlの表形式です。 – Linda

関連する問題