स्थान के अनुसार पंडों का कॉलम चुनना


101

मैं बस एक पूर्णांक द्वारा नाम पंडों स्तंभों का उपयोग करने की कोशिश कर रहा हूँ।

आप स्थान का उपयोग करके एक पंक्ति का चयन कर सकते हैं df.ix[3]

लेकिन पूर्णांक द्वारा एक कॉलम का चयन कैसे करें?

मेरा डेटाफ़्रेम:

df=pandas.DataFrame({'a':np.random.rand(5), 'b':np.random.rand(5)})

एक सवाल पूछने के लिए अद्यतन किया गया।
जेसन स्ट्रिम्पेल

इस उदाहरण में, स्तंभों का क्रम परिभाषित द्वारा नहीं हो सकता है। ('ए' पहला या दूसरा कॉलम हो सकता है)।
user48956

जवाबों:


152

दो दृष्टिकोण जो दिमाग में आते हैं:

>>> df
          A         B         C         D
0  0.424634  1.716633  0.282734  2.086944
1 -1.325816  2.056277  2.583704 -0.776403
2  1.457809 -0.407279 -1.560583 -1.316246
3 -0.757134 -1.321025  1.325853 -2.513373
4  1.366180 -1.265185 -2.184617  0.881514
>>> df.iloc[:, 2]
0    0.282734
1    2.583704
2   -1.560583
3    1.325853
4   -2.184617
Name: C
>>> df[df.columns[2]]
0    0.282734
1    2.583704
2   -1.560583
3    1.325853
4   -2.184617
Name: C

संपादित करें : मूल उत्तर ने सुझाव दिया था df.ix[:,2]लेकिन यह फ़ंक्शन अब पदावनत हो गया है। उपयोगकर्ताओं को स्विच करना चाहिए df.iloc[:,2]


28
FYI करें df.ix को अब df.iloc
yosemite_k

ध्यान दें कि यदि आपके पास एक ही नाम के साथ दो कॉलम हैं df.iloc [:, 2] विधि काम करती है, तो सिर्फ एक कॉलम लौटाती है लेकिन df [df.columns [2]] विधि समान नाम के साथ दोनों कॉलम लौटाएगी।
बॉबीजी

54

आप df.icol(n)किसी कॉलम को पूर्णांक द्वारा एक्सेस करने के लिए भी उपयोग कर सकते हैं ।

अद्यतन: icolहटा दिया गया है और उसी कार्यक्षमता को प्राप्त किया जा सकता है:

df.iloc[:, n]  # to access the column at the nth position

2
ध्यान दें कि आगामी संस्करण 0.11.0 के लिए, इन विधियों को हटा दिया गया है और भविष्य के संस्करणों में हटाया जा सकता है। Iloc / iat का उपयोग करके स्थिति का चयन करने के तरीके के बारे में pandas.pydata.org/pandas-docs/dev/… देखें ।
राउटर ओवरमीयर

1
उपरोक्त लिंक को हटा दिया गया है क्योंकि अनुक्रमण डॉक्स का पुनर्गठन किया गया है: pandas.pydata.org/pandas-docs/stable/… । आज तक, जिसमें सबसे हालिया संस्करण 0.21.0 है, ilocस्थिति के अनुसार कॉलम तक पहुंचने के लिए प्रलेखित दृष्टिकोण है।
iff_or

21

आप का उपयोग कर लेबल आधारित का उपयोग कर सकते हैं .लोक या सूचकांक का उपयोग कर .iloc पद्धति स्तंभ स्तंभों सहित-टुकड़ा करने की विधि:

In [50]: import pandas as pd

In [51]: import numpy as np

In [52]: df = pd.DataFrame(np.random.rand(4,4), columns = list('abcd'))

In [53]: df
Out[53]: 
          a         b         c         d
0  0.806811  0.187630  0.978159  0.317261
1  0.738792  0.862661  0.580592  0.010177
2  0.224633  0.342579  0.214512  0.375147
3  0.875262  0.151867  0.071244  0.893735

In [54]: df.loc[:, ["a", "b", "d"]] ### Selective columns based slicing
Out[54]: 
          a         b         d
0  0.806811  0.187630  0.317261
1  0.738792  0.862661  0.010177
2  0.224633  0.342579  0.375147
3  0.875262  0.151867  0.893735

In [55]: df.loc[:, "a":"c"] ### Selective label based column ranges slicing
Out[55]: 
          a         b         c
0  0.806811  0.187630  0.978159
1  0.738792  0.862661  0.580592
2  0.224633  0.342579  0.214512
3  0.875262  0.151867  0.071244

In [56]: df.iloc[:, 0:3] ### Selective index based column ranges slicing
Out[56]: 
          a         b         c
0  0.806811  0.187630  0.978159
1  0.738792  0.862661  0.580592
2  0.224633  0.342579  0.214512
3  0.875262  0.151867  0.071244

6

आप dataFrame.ix पर स्तंभ सूचकांकों की सूची को पास करके कई कॉलम तक पहुँच सकते हैं।

उदाहरण के लिए:

>>> df = pandas.DataFrame({
             'a': np.random.rand(5),
             'b': np.random.rand(5),
             'c': np.random.rand(5),
             'd': np.random.rand(5)
         })

>>> df
          a         b         c         d
0  0.705718  0.414073  0.007040  0.889579
1  0.198005  0.520747  0.827818  0.366271
2  0.974552  0.667484  0.056246  0.524306
3  0.512126  0.775926  0.837896  0.955200
4  0.793203  0.686405  0.401596  0.544421

>>> df.ix[:,[1,3]]
          b         d
0  0.414073  0.889579
1  0.520747  0.366271
2  0.667484  0.524306
3  0.775926  0.955200
4  0.686405  0.544421

1

विधि .transpose () स्तंभों को पंक्तियों और पंक्तियों को स्तंभ में रूपांतरित करती है, इसलिए आप लिख भी सकते हैं

df.transpose().ix[3]

2
ट्रांसपोज़िंग डेटा प्रकारों के साथ गड़बड़ कर सकता है।
आईएएनएस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.