पांड केवल कॉलम नामों के साथ खाली डेटाफ़्रेम बनाते हैं


151

मेरे पास एक डायनेमिक डेटाफ़्रेम है जो ठीक काम करता है, लेकिन जब डेटाफ़्रेम में कोई डेटा नहीं जोड़ा जाता है तो मुझे एक त्रुटि मिलती है। और इसलिए मुझे केवल कॉलम नामों के साथ खाली DataFrame बनाने के लिए समाधान की आवश्यकता है।

अभी के लिए मेरे पास कुछ इस तरह है:

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

पुनश्च: यह महत्वपूर्ण है कि स्तंभ के नाम अभी भी एक DataFrame में दिखाई देंगे।

लेकिन जब मैं इसे इस तरह से उपयोग करता हूं तो मुझे इसके परिणामस्वरूप कुछ मिलता है:

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

"खाली डेटाफ़्रेम" भाग अच्छा है! लेकिन इंडेक्स चीज़ के बजाय मुझे अभी भी कॉलम प्रदर्शित करने की आवश्यकता है।

संपादित करें:

एक महत्वपूर्ण बात जो मुझे पता चली: मैं इस डेटाफ्रेम को एक जीनजे 2 का उपयोग करके एक पीडीएफ में परिवर्तित कर रहा हूं, इसलिए इसलिए मैं इसे HTML की तरह इसे पहले आउटपुट करने के लिए एक विधि कह रहा हूं:

df.to_html()

यह वह जगह है जहां कॉलम खो जाता है मुझे लगता है।

Edit2: सामान्य तौर पर, मैंने इस उदाहरण का अनुसरण किया: http://pbpython.com/pdf-reports.html । सीएसएस भी लिंक से है। यही मैं डेटाफ्रेम को पीडीएफ में भेजने के लिए करता हूं:

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:

यदि मैं निर्माण के बाद डेटाफ्रेम को सही तरीके से प्रिंट करता हूं तो मुझे अनुवर्ती मिलता है:

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

यह उचित प्रतीत होता है, लेकिन अगर मैं टेम्पलेट_ प्रिंट निकालता हूं:

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

क्या नीचे अब आपके लिए काम करता है? यदि नहीं, तो आपको अपने पर्यावरण के बारे में अधिक जानकारी प्रदान करनी चाहिए, जैसे कि पायथन संस्करण, पंडों का संस्करण, आदि
मार्कस वी।

मैं Python v3.4, Pandas v0.13.1
E. Muuli

1
हाय Eerik, मैं क्या तुम E4 में पुन: पेश नहीं कर सकते। यदि मैं ऐसा करता हूं तो प्रिंट आउट ठीक उसी तरह दिखता है जैसे मेरे पास है। क्या आप अपने पांडा संस्करण को अपडेट कर सकते हैं? क्योंकि आपकी उम्र अधिक है (मैं 0.20.1 पर हूं)।
मार्कस वी।

1
धन्यवाद, अद्यतन पंडों ने काम किया!
ई। मुली

जवाबों:


190

आप कॉलम नामों या इंडेक्स के साथ एक खाली डेटाफ़्रेम बना सकते हैं:

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>

अगर मैंने मदद की तो मैंने मुख्य प्रश्न को संपादित किया। E: फिर से संपादित किया गया।
ई। मुली

9

क्या आप कुछ इस तरह की तलाश में हैं?

    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')


जब मैं कोशिश करता हूं, तो मैं अपने कॉलम के नाम नहीं खोता। यह एक html तालिका प्रारूप में है।
लिंडा

3

df.to_html() एक कॉलम पैरामीटर है।

बस कॉलम को to_html()विधि में पास करें ।

df.to_html(columns=['A','B','C','D','E','F','G'])
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.