python - पांडा डेटाफ्रेम कॉलम हेडर से सूची प्राप्त करें




pandas dataframe (13)

मैं एक पांडा डेटाफ्रेम से कॉलम हेडर की एक सूची प्राप्त करना चाहता हूं। डेटाफ्रेम उपयोगकर्ता इनपुट से आएगा, इसलिए मुझे नहीं पता होगा कि कितने कॉलम होंगे या उन्हें क्या कहा जाएगा।

उदाहरण के लिए, अगर मुझे इस तरह डेटाफ्रेम दिया गया है:

>>> my_dataframe
    y  gdp  cap
0   1    2    5
1   2    3    9
2   8    7    2
3   3    4    7
4   6    7    7
5   4    8    3
6   8    2    8
7   9    9   10
8   6    6    4
9  10   10    7

मैं इस तरह की एक सूची प्राप्त करना चाहता हूं:

>>> header_list
[y, gdp, cap]

Answers

जैसा कि शिमोन विसार द्वारा उत्तर दिया गया ... आप कर सकते थे

list(my_dataframe.columns.values) 

या

list(my_dataframe) # for less typing.

लेकिन मुझे लगता है कि सबसे प्यारी जगह है:

list(my_dataframe.columns)

यह स्पष्ट है, एक ही समय में अनावश्यक रूप से लंबे समय तक नहीं।


सबसे आसान तरीका है:

list(my_dataframe.columns)

नोटबुक में

आईपीथन नोटबुक में डेटा अन्वेषण के लिए, मेरा पसंदीदा तरीका यह है:

sorted(df)

जो वर्णानुक्रमित क्रमबद्ध सूची को पढ़ने में आसान उत्पन्न करेगा।

एक कोड भंडार में

कोड में मुझे यह करने के लिए और अधिक स्पष्ट लगता है

df.columns

क्योंकि यह दूसरों को आपके कोड को पढ़ने के बारे में बताता है जो आप कर रहे हैं।


एक निर्मित विधि है जो सबसे अधिक प्रदर्शनकारी है:

my_dataframe.columns.values.tolist()

.columns एक Index देता है, .columns.values एक array देता है और इसमें एक list वापस करने के लिए एक सहायक कार्य है।

संपादित करें

जो लोग टाइपिंग से नफरत करते हैं उनके लिए शायद सबसे छोटी विधि है:

list(df)

सूचकांक विशेषताओं का उपयोग कर सकते हैं

df = pd.DataFrame({'col1' : np.random.randn(3), 'col2' : np.random.randn(3)},
                 index=['a', 'b', 'c'])

आप मूल्यों को एक सूची के रूप में प्राप्त कर सकते हैं:

list(my_dataframe.columns.values)

इसके अलावा आप बस उपयोग कर सकते हैं:

list(my_dataframe)

n = []
for i in my_dataframe.columns:
    n.append(i)
print n

>>> list(my_dataframe)
['y', 'gdp', 'cap']

डीबगर मोड में डेटाफ्रेम के कॉलम सूचीबद्ध करने के लिए, सूची समझ का उपयोग करें:

>>> [c for c in my_dataframe]
['y', 'gdp', 'cap']

वैसे, आप सॉर्ट किए sorted का उपयोग करके sorted सूची प्राप्त कर सकते हैं:

>>> sorted(my_dataframe)
['cap', 'gdp', 'y']

मुझे लगता है कि सवाल अतिरिक्त स्पष्टीकरण के हकदार है।

जैसा कि @fixxxer ने नोट किया है, उत्तर आपके प्रोजेक्ट में उपयोग किए जा रहे पांडा संस्करण पर निर्भर करता है। जो आप pd.__version__ कमांड के साथ प्राप्त कर सकते हैं।

यदि आप 0.16.0 की तुलना में पांडा के पुराने संस्करण का उपयोग करके मेरे जैसे किसी कारण (डेबियन जेसी पर मैं 0.14.1 का उपयोग करता हूं), तो आपको इसका उपयोग करने की आवश्यकता है:

df.keys().tolist() क्योंकि अभी तक कोई df.columns विधि लागू नहीं है।

इस कुंजी विधि का लाभ यह है कि यह पांडा के नए संस्करण में भी काम करता है, इसलिए यह अधिक सार्वभौमिक है।


कुछ त्वरित परीक्षण किया, और शायद अविश्वसनीय रूप से अंतर्निहित संस्करण dataframe.columns.values.tolist() का उपयोग कर सबसे तेज़ है:

In [1]: %timeit [column for column in df]
1000 loops, best of 3: 81.6 µs per loop

In [2]: %timeit df.columns.values.tolist()
10000 loops, best of 3: 16.1 µs per loop

In [3]: %timeit list(df)
10000 loops, best of 3: 44.9 µs per loop

In [4]: % timeit list(df.columns.values)
10000 loops, best of 3: 38.4 µs per loop

(मुझे अभी भी वास्तव में list(dataframe) डेटाफ्रेम) पसंद है, इसलिए एडचम धन्यवाद!)


यह my_dataframe.columns रूप में उपलब्ध है।


यह दिलचस्प है लेकिन df.columns.values.tolist() लगभग 3 गुना तेज है तो df.columns.tolist() लेकिन मैंने सोचा कि वे वही हैं:

In [97]: %timeit df.columns.values.tolist()
100000 loops, best of 3: 2.97 µs per loop

In [98]: %timeit df.columns.tolist()
10000 loops, best of 3: 9.67 µs per loop

पैट्रिक का समाधान शायद सबसे साफ है। यदि आपको गतिशील रूप से मॉड्यूल को भी चुनने की आवश्यकता है, तो आप इसे आयात कर सकते हैं:

module = __import__('foo')
func = getattr(module, 'bar')
func()




python pandas dataframe