2016-11-09 11 views
6

मेरे पास देश भर के विभिन्न क्षेत्रों में बिक्री पर एक बड़ी डेटासेट सूची प्रतियोगी उत्पाद है। मैं इस डेटाफ्रेम को इस नए डेटाफ्रेम के नामों के भीतर कॉलम मानों का उपयोग करके एक पुनरावृत्ति प्रक्रिया के माध्यम से क्षेत्र के आधार पर कई अन्य लोगों में विभाजित करना चाहता हूं, ताकि मैं प्रत्येक अलग से काम कर सकूं - उदा। प्रत्येक क्षेत्र में जानकारी को मूल्य से समझने के लिए कि प्रत्येक में बाजार कैसा दिखता है। मैं नीचे दिए गए डेटा का एक सरलीकृत संस्करण दिया है:पायथन - कॉलम मानों के आधार पर एकाधिक डेटाफ्रेम में विभाजित डेटाफ्रेम और उन्हें उन मानों के साथ नामकरण

region_list=df['Region'].unique().tolist() 

कौन सा मैं एक सतत पाश है कि उत्पादन में उपयोग करने के लिए उम्मीद कर रहा था:

Competitor Region ProductA ProductB 
Comp1  A  £10  £15 
Comp1  B  £11  £16 
Comp1  C  £11  £15 
Comp2  A  £9  £16 
Comp2  B  £12  £14 
Comp2  C  £14  £17 
Comp3  A  £11  £16 
Comp3  B  £10  £15 
Comp3  C  £12  £15 

मैं नीचे का उपयोग कर क्षेत्रों की सूची बना सकते हैं कई डेटाफ्रेम, उदाहरण के लिए

df_A : 

Competitor Region ProductA ProductB 
Comp1  A  £10  £15 
Comp2  A  £9  £16 
Comp3  A  £11  £16 

मैं कोड

df_A=df.loc[df['Region']==A] 

साथ प्रत्येक क्षेत्र के लिए मैन्युअल रूप से कर सकता है, लेकिन वास्तविकता यह डाटासेट क्षेत्रों जो इस कोड थकाऊ होगा की एक बड़ी संख्या है कि है। क्या एक पुनरावृत्ति लूप बनाने का कोई तरीका है जो इसे दोहराएगा? एक समान प्रश्न है जो डेटा फ्रेम को विभाजित करने के बारे में पूछता है, लेकिन उत्तर यह नहीं दिखाता है कि प्रत्येक कॉलम मान के आधार पर आउटपुट लेबल कैसे करें।

मैं पाइथन के लिए काफी नया हूं और अभी भी सीख रहा हूं, इसलिए यदि वास्तव में इस समस्या के करीब एक अलग, अधिक समझदार विधि है, तो मैं सुझावों के लिए बहुत खुला हूं।

उत्तर

7

subsetting विशिष्ट मान से एक groupby कहा जाता है, अगर बस एक for पाश के साथ समूहों के माध्यम से पुनरावृति करना चाहते हैं, वाक्य रचना है:

for region, df_region in df.groupby('Region'): 
    print(df_region) 

    Competitor Region ProductA ProductB 
0  Comp1  A  £10  £15 
3  Comp2  A  £9  £16 
6  Comp3  A  £11  £16 
    Competitor Region ProductA ProductB 
1  Comp1  B  £11  £16 
4  Comp2  B  £12  £14 
7  Comp3  B  £10  £15 
    Competitor Region ProductA ProductB 
2  Comp1  C  £11  £15 
5  Comp2  C  £14  £17 
8  Comp3  C  £12  £15 
+5

बेहतर अभी भी 'dict_of_regions = {k: कश्मीर के लिए वी, में वी df.groupby ('क्षेत्र')} ' – piRSquared

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

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