2013-05-28 24 views
42
के रूप में चयनित स्तंभ रखें

जब एक पांडा DataFrame से एक एकल स्तंभ का चयन (माना df.iloc[:, 0], df['A'], या df.A, आदि), जिसके परिणामस्वरूप वेक्टर स्वचालित रूप से एक एकल-स्तंभ के बजाय एक श्रृंखला में बदल जाती है डेटा ढांचा। हालांकि, मैं कुछ फ़ंक्शन लिख रहा हूं जो डेटाफ्रेम को इनपुट तर्क के रूप में लेते हैं। इसलिए, मैं श्रृंखला के बजाय सिंगल-कॉलम डेटाफ्रेम से निपटना पसंद करता हूं ताकि फ़ंक्शन यह कह सके कि df.columns पहुंच योग्य है। अभी मुझे pd.DataFrame(df.iloc[:, 0]) जैसे कुछ का उपयोग कर श्रृंखला को डेटाफ्रेम में स्पष्ट रूप से रूपांतरित करना होगा। यह सबसे साफ विधि की तरह प्रतीत नहीं होता है। क्या डेटाफ्रेम से सीधे इंडेक्स करने का एक और शानदार तरीका है ताकि परिणाम श्रृंखला के बजाय एकल-कॉलम डेटाफ्रेम हो?अजगर पांडा: DataFrame बजाय सीरीज

+6

df.iloc [:, [0]] या डीएफ [['ए']]; डीएफ.ए केवल एक श्रृंखला वापस देगी हालांकि – Jeff

उत्तर

47

@Jeff का उल्लेख है वहाँ के रूप में यह करने के लिए कुछ तरीके हैं, लेकिन मैं का उपयोग करना चाहिये loc/iloc अधिक स्पष्ट हो (और अपने अस्पष्ट कुछ की कोशिश कर रहा है, तो जल्दी त्रुटियों को बढ़ाने के) के लिए:

In [10]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) 

In [11]: df 
Out[11]: 
    A B 
0 1 2 
1 3 4 

In [12]: df[['A']] 

In [13]: df[[0]] 

In [14]: df.loc[:, ['A']] 

In [15]: df.iloc[:, [0]] 

Out[12-15]: # they all return the same thing: 
    A 
0 1 
1 3 

बाद के दो विकल्प पूर्णांक कॉलम नामों के मामले में अस्पष्टता को हटाते हैं (ठीक है क्यों loc/iloc बनाया गया था)। उदाहरण के लिए:

In [16]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 0]) 

In [17]: df 
Out[17]: 
    A 0 
0 1 2 
1 3 4 

In [18]: df[[0]] # ambiguous 
Out[18]: 
    A 
0 1 
1 3 
+2

आपको परेशान करने के लिए खेद है, लेकिन इसके आसपास वास्तव में एक त्वरित सवाल है। मैं देखता हूं कि अतिरिक्त '[]' परिणाम 'सीरीज' के बजाय 'डेटाफ्रेम' कैसे बनाता है, लेकिन पांडा दस्तावेज़ों में इस तरह के इंडेक्सिंग सिंटैक्स पर चर्चा की जाती है? मैं सिर्फ इंडेक्सिंग की इस तकनीक के लिए "आधिकारिक" नाम प्राप्त करने की कोशिश कर रहा हूं ताकि मैं वास्तव में इसे समझ सकूं। धन्यवाद! –

+2

@sparc_spread http://pandas.pydata.org/pandas-docs/stable/indexing.html#basics "आप उस क्रम में कॉलम चुनने के लिए कॉलम की एक सूची [] में पास कर सकते हैं।" मुझे यकीन है कि अगर इसका नाम है! –

+0

हाँ ऐसा लगता है कि इसमें कोई नहीं है - लेकिन मैं इसे अब से उपयोग करूँगा। आश्चर्यजनक है कि एपीआई और दस्तावेज़ दोनों में कितनी चीजें दफन की जाती हैं। धन्यवाद! –

संबंधित मुद्दे