python - पांडा डेटाफ्रेम में कॉलम का चयन करना




pandas dataframe (6)

अपने कॉलम नाम ( df.columns ) मानते हैं ['index','a','b','c'] , फिर आपके इच्छित डेटा तीसरे और चौथे कॉलम में है। यदि आपकी स्क्रिप्ट चलने पर आप उनके नाम नहीं जानते हैं, तो आप यह कर सकते हैं

newdf = df[df.columns[2:4]] # Remember, Python is 0-offset! The "3rd" entry is at slot 2.

चूंकि ईएमएस अपने उत्तर में df.ix , df.ix स्लाइस कॉलम थोड़ा अधिक संक्षेप में है, लेकिन .columns स्लाइसिंग इंटरफ़ेस अधिक प्राकृतिक हो सकता है क्योंकि यह वेनिला 1-डी पायथन सूची अनुक्रमण / टुकड़ा वाक्यविन्यास का उपयोग करता है।

चेतावनी: 'index' DataFrame कॉलम के लिए एक बुरा नाम है। उसी लेबल का उपयोग वास्तविक df.index विशेषता, एक Index सरणी के लिए भी किया जाता है। तो आपका कॉलम df['index'] द्वारा वापस किया जाता है और वास्तविक डेटाफ्रेम इंडेक्स df.index द्वारा वापस किया df.index । एक Index एक विशेष प्रकार की Series जो इसके तत्वों के मूल्यों को देखने के लिए अनुकूलित है। Df.index के लिए यह उनके लेबल द्वारा पंक्तियों को देखने के लिए है। वह df.columns विशेषता भी उनके लेबल द्वारा कॉलम देखने के लिए एक pd.Index सरणी है।

मेरे पास अलग-अलग कॉलम में डेटा है लेकिन मुझे नहीं पता कि इसे किसी अन्य चर में सहेजने के लिए इसे कैसे निकाला जाए।

index  a   b   c
1      2   3   4
2      3   4   5

मैं 'b' , 'c' चयन कैसे करूं और इसे डीएफ 1 में कैसे सहेजूं?

मैंने कोशिश की

df1 = df['a':'b']
df1 = df.ix[:, 'a':'b']

कोई काम नहीं कर रहा है।


आप कॉल किए जाने वाले कॉलम की एक सूची प्रदान कर सकते हैं और पांडस डेटाफ्रेम पर drop() फ़ंक्शन का उपयोग करके केवल कॉलम के साथ डेटाफ्रेम वापस कर सकते हैं।

बस केह रहा हू

colsToDrop = ['a']
df.drop(colsToDrop, axis=1)

केवल कॉलम b और c साथ डेटाफ्रेम वापस कर देगा।

drop विधि here दस्तावेज here


बस उपयोग करें: यह बी और सी कॉलम का चयन करेगा।

df1=pd.DataFrame()
df1=df[['b','c']]

तो आप सिर्फ डीएफ 1 कॉल कर सकते हैं:

df1

मुझे एहसास है कि यह सवाल काफी पुराना है, लेकिन पांडा के नवीनतम संस्करण में बिल्कुल ऐसा करने का एक आसान तरीका है। कॉलम नाम (जो तार हैं) को आप जिस तरह से पसंद कर सकते हैं उन्हें काटा जा सकता है।

columns = ['b', 'c']
df1 = pd.DataFrame(df, columns=columns)

यदि आप पंक्ति सूचकांक और कॉलम नाम से एक तत्व प्राप्त करना चाहते हैं, तो आप इसे df['b'][0] तरह कर सकते हैं। यह उतना आसान है जितना आप छवि कर सकते हैं।

या आप df.ix[0,'b'] उपयोग कर सकते हैं, सूचकांक और लेबल का मिश्रित उपयोग।


संस्करण 0.11.0 के अनुसार, .loc अनुक्रमणिकाकर्ता का उपयोग करने की कोशिश में कॉलम को कटाया जा सकता है :

df.loc[:, 'C':'E']

E माध्यम से कॉलम C देता है।

यादृच्छिक रूप से जेनरेट किए गए डेटाफ्रेम पर एक डेमो:

import pandas as pd
import numpy as np
np.random.seed(5)
df = pd.DataFrame(np.random.randint(100, size=(100, 6)), 
                  columns=list('ABCDEF'), 
                  index=['R{}'.format(i) for i in range(100)])
df.head()

Out: 
     A   B   C   D   E   F
R0  99  78  61  16  73   8
R1  62  27  30  80   7  76
R2  15  53  80  27  44  77
R3  75  65  47  30  84  86
R4  18   9  41  62   1  82

सी से ई के कॉलम प्राप्त करने के लिए (ध्यान दें कि पूर्णांक स्लाइसिंग के विपरीत, 'ई' कॉलम में शामिल है):

df.loc[:, 'C':'E']

Out: 
      C   D   E
R0   61  16  73
R1   30  80   7
R2   80  27  44
R3   47  30  84
R4   41  62   1
R5    5  58   0
...

लेबल के आधार पर पंक्तियों का चयन करने के लिए वही काम करता है। उन स्तंभों से पंक्तियां 'R6' से 'R10' प्राप्त करें:

df.loc['R6':'R10', 'C':'E']

Out: 
      C   D   E
R6   51  27  31
R7   83  19  18
R8   11  67  65
R9   78  27  29
R10   7  16  94

.loc भी एक बुलियन सरणी स्वीकार करता है ताकि आप उन स्तंभों का चयन कर सकें जिनके सरणी में संबंधित प्रविष्टि True । उदाहरण के लिए, df.columns.isin(list('BCD')) array([False, True, True, True, False, False], dtype=bool) देता है array([False, True, True, True, False, False], dtype=bool) - सही है अगर कॉलम नाम सूची में है ['B', 'C', 'D'] ; झूठा, अन्यथा।

df.loc[:, df.columns.isin(list('BCD'))]

Out: 
      B   C   D
R0   78  61  16
R1   27  30  80
R2   53  80  27
R3   65  47  30
R4    9  41  62
R5   78   5  58
...




dataframe