2015-03-04 27 views
7

की सूची प्राप्त मैं कोड की एक पंक्ति है। मैं इस सूची को कैसे वापस कर सकता हूं? समान विशेषताओं के लिए, मैं x.Attribute का उपयोग करता हूं और यह ठीक काम करता है, लेकिन x.color एक ही तरीके से व्यवहार नहीं करता है।अजगर पांडा GroupBy समूहों

+0

तो क्या आप रंग में अद्वितीय मूल्यों की एक सूची चाहते हैं? –

+1

आप अपने मूल डीएफ से अद्वितीय मान प्राप्त कर सकते हैं, 'x [' रंग 'समूह को समूहित करने की कोई आवश्यकता नहीं है। अद्वितीय() ' – EdChum

+1

एक्स [' रंग ']। अनूठा अंततः वही था जो मैं खोज रहा था। धन्यवाद। – user3745115

उत्तर

1

यहां यह कैसे करें।

groups = list() 
for g, data in x.groupby('Color'): 
    print(g, data) 
    groups.append(g) 

कोर यहाँ विचार यह है: यदि आप एक dataframe GroupBy इटरेटर से अधिक पुनरावृति, आप (समूह का नाम, फ़िल्टर किए गए डेटा फ्रेम) के दो-टपल वापस मिल जाएगा, जहां फ़िल्टर किए गए डेटा फ्रेम केवल इसी रिकॉर्ड में शामिल है उस समूह के लिए)।

+2

वैकल्पिक रूप से, यदि आप प्रत्येक कॉलम में मौजूद अद्वितीय मान प्राप्त करना चाहते हैं, तो आप 'numpy.unique (x [col_name] .values)' – ericmjl

3

यह मेरी समझ है कि आपके पास डेटा फ्रेम है जिसमें गुणक कॉलम हैं। कॉलम में से एक "रंग" है जिसमें विभिन्न प्रकार के रंग होते हैं। आप मौजूद अद्वितीय रंगों की एक सूची वापस करना चाहते हैं।

colorGroups = df.groupby(['Color']) 
for c in colorGroups.groups: 
    print c 

उपर्युक्त कोड आपको रंगों के नामों को दोहराए बिना मौजूद सभी रंग देगा।

Red 
Blue 
Green 
Yellow 
Purple 
Orange 
Black 

एक वैकल्पिक unique() समारोह जो एक श्रृंखला में सभी अनन्य मानों की एक सरणी देता है: इस प्रकार, आप इस तरह के रूप में एक उत्पादन मिलना चाहिए। इस प्रकार प्राप्त करने के लिए सभी के अनन्य रंग की एक सरणी, आप क्या करेंगे: तो उदाहरण print df['Color'].unique()[3] के लिए आप Yellow देना होगा

df['Color'].unique() 

उत्पादन, एक सरणी है।

14

यह ऐसा करने का बहुत ही आसान तरीका है:

g = x.groupby('Color') 

g.groups.keys() 

groupby() पांडा करने के बाद आप समूहीकृत डीएफएस के एक dict देता है। फ़ंक्शन keys() में निर्मित पायथन द्वारा आप आसानी से इस निर्देश की मुख्य सूची प्राप्त कर सकते हैं।

+0

कर सकते हैं यह अन्य उत्तरों की तुलना में अधिक 'pandorable' है। :) – Peaceful

5

मैं इसे यानकी मा के उत्तर में टिप्पणी के रूप में जोड़ना चाहता था, लेकिन मेरे पास अभी तक टिप्पणी करने की प्रतिष्ठा नहीं है।

आप समूहों के आदेश के बारे में परवाह नहीं करते हैं, कि इस सवाल का जवाब ठीक से काम करेगा:

g = x.groupby('Color') 
g.groups.keys() 
list(g.groups) # or this 

हालांकि, ध्यान दें कि g.groups एक शब्दकोश है तो कुंजी स्वाभाविक अव्यवस्थित कर रहे हैं! यह मामला तब भी है जब आप का उपयोग groupby विधि समूहों को सॉर्ट करने के लिए करते हैं, जो डिफ़ॉल्ट रूप से सत्य है।

यह वास्तव में मुझे कठिन बनाता है जब इसके परिणामस्वरूप दो प्लेटफ़ॉर्म पर एक अलग क्रम होता है, खासकर जब से मैं ऊपर दूसरे फॉर्म का उपयोग कर रहा था, इसलिए यह स्पष्ट नहीं था कि g.groupsdict था।

g = x.groupby('Color') 
groups = [name for name,unused_df in g] 
:

मेरी राय में, यह करने के लिए सबसे अच्छा तरीका यह है कि GroupBy object has an iterator का लाभ लेने के लिए, और एक सूची समझ का उपयोग क्रम में वे GroupBy वस्तु में मौजूद समूहों वापस जाने के लिए करने के लिए है

यह थोड़ा कम पठनीय है, लेकिन यह हमेशा समूहों को सही क्रम में वापस कर देगा।

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