पायथन पांडा में कॉलम नाम से कॉलम इंडेक्स प्राप्त करें


220

R में जब आपको उस कॉलम के नाम के आधार पर एक कॉलम इंडेक्स प्राप्त करना होगा जो आप कर सकते थे

idx <- which(names(my_data)==my_colum_name)

क्या पंडों के डेटाफ्रेम के साथ भी ऐसा ही एक तरीका है?

जवाबों:


360

ज़रूर, आप उपयोग कर सकते हैं .get_loc():

In [45]: df = DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})

In [46]: df.columns
Out[46]: Index([apple, orange, pear], dtype=object)

In [47]: df.columns.get_loc("pear")
Out[47]: 2

हालांकि ईमानदार होने के लिए मुझे अक्सर इसकी आवश्यकता नहीं होती है। आमतौर पर नाम से पहुंच वह है जो मैं इसे ( df["pear"]और df[["apple", "orange"]], या शायद df.columns.isin(["orange", "pear"])) चाहता हूं, हालांकि मैं निश्चित रूप से ऐसे मामले देख सकता हूं जहां आप सूचकांक संख्या चाहते हैं।


7
.ilocऑपरेटर का उपयोग करते समय कॉलम संख्या उपयोगी होती है , जहाँ आपको पंक्तियों और स्तंभों के लिए केवल पूर्णांक पास करना होगा।
अबे

4
या पुस्तकालयों का उपयोग करते समय जो डीएफ चाहते हैं कि एक विशिष्ट सरणी में परिवर्तित हो और विशेष विशेषताओं वाले स्तंभों के सूचकांक। उदाहरण के लिए कैटबॉस्ट श्रेणीबद्ध विशेषताओं के सूचकांकों की सूची चाहता है।
टॉम वॉकर

1
ExcelWriter के साथ कार्यपत्रक बनाने के बाद सशर्त स्वरूपण जोड़ते समय मुझे इसकी आवश्यकता थी। मुझे उनके एक्सेल निर्देशांक द्वारा कॉलम (और सेल) को संदर्भित करने की आवश्यकता है।
अलेजांद्रो

सबप्लॉट की एक सरणी बनाते समय मैं इसका उपयोग करता हूं। प्रत्येक कॉलम में डेटा से एक सबप्लॉट।
डेविड कोलिन्स

2
जब मैं insertकिसी मौजूदा कॉलम के बाद नया कॉलम चाहता हूं, तो मैं इसका उपयोग करता हूं ।
अमीर ए। शबानी

33

यहाँ सूची समझ के माध्यम से एक समाधान है। कोल इन इंडेक्स पाने के लिए कॉलम की सूची है:

[df.columns.get_loc(c) for c in cols if c in df]

4
चूंकि colsकम से कम तत्व हैं df.columns, इसलिए for c in cols if c in dfकरना तेजी से होगा।
बजे एरिक ओ लेबिगॉट सेप

15

DSM का समाधान काम करता है, लेकिन अगर आप चाहते हैं कि आप के बराबर एक प्रत्यक्ष whichकर सकते हैं(df.columns == name).nonzero()


10

जब आप कई कॉलम मैच ढूंढ रहे होंगे, तो searchsortedविधि का उपयोग करते हुए एक वेक्टर समाधान का उपयोग किया जा सकता है। इस प्रकार, dfडेटाफ्रेम और query_colsकॉलम नामों के रूप में खोजे जाने के लिए, एक कार्यान्वयन होगा -

def column_index(df, query_cols):
    cols = df.columns.values
    sidx = np.argsort(cols)
    return sidx[np.searchsorted(cols,query_cols,sorter=sidx)]

सैंपल रन -

In [162]: df
Out[162]: 
   apple  banana  pear  orange  peach
0      8       3     4       4      2
1      4       4     3       0      1
2      1       2     6       8      1

In [163]: column_index(df, ['peach', 'banana', 'apple'])
Out[163]: array([4, 1, 0])

8

यदि आप स्तंभ स्थान से स्तंभ का नाम चाहते हैं (ओपी प्रश्न के आसपास दूसरा तरीका), तो आप उपयोग कर सकते हैं:

>>> df.columns.get_values()[location]

@DSM उदाहरण का उपयोग:

>>> df = DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})

>>> df.columns

Index(['apple', 'orange', 'pear'], dtype='object')

>>> df.columns.get_values()[1]

'orange'

दूसरा तरीका:

df.iloc[:,1].name

df.columns[location] #(thanks to @roobie-nuby for pointing that out in comments.) 

2
सिर्फ क्यों नहीं df.columns[location]?
रूबी नबी

1

इस बारे में कैसा है:

df = DataFrame({"pear": [1,2,3], "apple": [2,3,4], "orange": [3,4,5]})
out = np.argwhere(df.columns.isin(['apple', 'orange'])).ravel()
print(out)
[1 2]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.