2017-01-26 14 views
3

グループ化してサブグループ化する必要があるデータフレームがあります。サブグループからは、サブグループの内容とカラムの一意の値を返す必要があります。グループのPandasグループ内のユニークな値

df = pandas.DataFrame({'country': pandas.Series(['US', 'Canada', 'US', 'US']), 
         'gender': pandas.Series(['male', 'female', 'male', 'female']), 
         'industry': pandas.Series(['real estate', 'shipping', 'telecom', 'real estate']), 
         'income': pandas.Series([1, 2, 3, 4])}) 

def subgroup(g): 
    return g.groupby(['gender']) 

s = df.groupby(['country']).apply(subgroup) 

「産業」のユニークさとグループ化された「性別」をどのように計算できますか?

-------------------------------------------- 
| US  | male | [real estate, telecom] | 
|  |---------------------------------- 
|  | female | [real estate]   | 
-------------------------------------------- 
| Canada | female | [shipping]    | 
-------------------------------------------- 

答えて

0

この関数を定義する必要はありません。groupby()およびunique()のみで問題を解決できます。

試してみてください。

df.groupby(['country','gender'])['industry'].unique() 

出力:

country gender 
Canada female    [shipping] 
US  female    [real estate] 
     male  [real estate, telecom] 
Name: industry, dtype: object 

はそれが役に立てば幸い!

関連する問題