2016-11-09 8 views
1

DataFrame "data_to_rank"には、 "r_DTS"という列があります。 data_to_rank [ 'r_DTS']は示していますpandas groupby:グループキーがありませんか?

Name: r_DTS, dtype: category 
Categories (4, object): [Bottom < 2 < Top < Missing] 

私がないとき:

>>> b = data_to_rank.groupby(['r_DTS']) 
>>> for key, group in b: print(key) 
Bottom 
2 
Top 
Missing 

しかし、私は他の変数との 'r_DTS' でグループは、 "r_DTS" disapearに "行方不明" とき。

>>> a = data_to_rank.groupby(['GRADE','r_DTS']) 
>>> for key, group in a: print(key) 
('HY', 'Bottom') 
('HY', '2') 
('HY', 'Top') 
('IG', 'Bottom') 
('IG', '2') 
('IG', 'Top') 

( 'HY'、 'Missing')と( 'IG'、 'Missing')はどこですか?

答えて

1

カテゴリ別にグループ化すると、グループ化されていないカテゴリでも、グループ化されたすべてのカテゴリが含まれます。

複数の項目でグループ化すると、すべてがカテゴリdタイプであっても、同じ特権が付与されるわけではありません。

あなたはグループ化するために自分で分類する必要があります。これはその方法の例です:

cats = pd.MultiIndex.from_product([ 
     data_to_rank.GRADE.cat.categories, 
     data_to_rank.r_DTS.cat.categories, 
    ]).map(tuple) 

categorical_to_group_by = pd.Categorical(
    data_to_rank[['GRADE', 'r_DTS']].apply(tuple, 1), cats 
) 

g = data_to_rank.groupby(categorical_to_group_by) 

for name, group in g: 
    print(name) 

('HY', 'Bottom') 
('HY', 2) 
('HY', 'Top') 
('HY', 'Missing') 
('IG', 'Bottom') 
('IG', 2) 
('IG', 'Top') 
('IG', 'Missing') 
関連する問題