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']
कोई काम नहीं कर रहा है।
बस उपयोग करें: यह बी और सी कॉलम का चयन करेगा।
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
...