2016-03-28 20 views
1

varsayalım Aşağıdaki DataFrame var:GroupBy

I (endeks ve CITY_NAME göre gruplandırılmış) nüfusun toplamını alıp yeni bir sütun oluşturmak istiyorum
import pandas as pd 

group = ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'] 
df = {'population': [100,200,300,400,500,600,700,800], 
     'city_name': ['Chicago', 'Chicago', 'New York', 'New York', 'Chicago', 'New York', 'Chicago', 'New York'], 
    } 
df = pd.DataFrame(df, index=group) 


    city_name population 
A Chicago  100 
A Chicago  200 
A New York  300 
A New York  400 
B Chicago  500 
B New York  600 
B Chicago  700 
B New York  800 

aynı veri çerçevesinde.

city_name population population_summed 
A Chicago  100    300 
A Chicago  200    300 
A New York  300    700 
A New York  400    700 
B Chicago  500    1200 
B New York  600    1400 
B Chicago  700    1200 
B New York  800    1400 

Ben sorun biraz yaşıyorum sebebi ben bir dizin ve bir sütun hem groupby nasıl kullanılacağını emin değilim olmasıdır: Örneğin, ben şöyle bir DataFrame istiyorum.

cevap

2

İndeks ve sütunu [df.index, 'city_name'] ile gruplandırabilirsiniz.

df['population_summed'] = df.groupby([df.index, 'city_name'])['population'].transform('sum') 

Bu veriyor:

city_name population population_summed 
A Chicago   100    300 
A Chicago   200    300 
A New York   300    700 
A New York   400    700 
B Chicago   500    1200 
B New York   600    1400 
B Chicago   700    1200 
B New York   800    1400 
değerlerin yeni Seri oluşturmak için GroupBy nesne üzerinde .transform('sum') kullanın