2016-11-09 19 views
6

numaralı değerlerle adlandırarak, ülkedeki farklı bölgelerdeki rakip ürünlerle ilgili geniş bir veri kümesi listeleme yapıyorum. Bu veri çerçevesini, bölgeye dayalı olarak, yeni veri şemalarının isimleri içindeki sütun değerlerini kullanarak yinelemeli bir süreç aracılığıyla, başkalarına da bölmek istiyorum; böylece, her biri ile ayrı ayrı çalışabilirim - örn. Her bölgede pazarın nasıl göründüğünü anlamak için her bölgedeki bilgileri fiyatlara göre sıralamak.Python - veri değerlerini sütun değerlerine göre birden çok veri çerçevesine bölerek bu değerleri

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

Ben üretilen iteratif döngüsünde kullanılacak umuyordum Hangi: Aşağıda kullanarak bölgelerin bir listesini oluşturabilirsiniz

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 

: Aşağıda verilerin basitleştirilmiş versiyonu verdik bir dizi veri çerçevesi, örneğin

df_A : 

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

kod

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

, her bölge için elle bu yapabilirdi ama gerçekte bu veri kümesi bu kod sıkıcı kılacak alanlarda çok sayıda olmasıdır. Bunu çoğaltacak yinelemeli bir döngü oluşturmanın bir yolu var mı? Datafram'ları bölme hakkında soru soran benzer bir soru var, ancak cevap her bir sütun değerine göre çıktıların nasıl etiketleneceğini göstermiyor.

Python'a oldukça yeni geliyorum ve hala öğreniyorum, bu yüzden bu soruna yaklaşmakta farklı, daha mantıklı bir yöntem varsa, önerilere çok açıkım. sadece for döngü gruplar arasında yineleme istiyorum farklı değerler ile

cevap

7

Altkümeleme bir groupby denir, sözdizimi: daha iyisi

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 k: v, v df.groupby ('Bölge)}' – piRSquared

İlgili konular