2017-03-29 9 views
1

私はパンダが初めてで、カテゴリ順序を維持したサブグループカウントのテーブルを生成しようとしており、ゼロカウントを示しています。 4つのオプションを持つシンプルなカテゴリです。パンダカテゴリサブグループ0カウント

グループ化しないと、期待通りに機能しますが、グループ化するとゼロカウントは表示されません(最後のグループを参照)。 [21]において

df2['Call_cat'] = df2['Group_INV'].astype('category') 
counts = df2['Call_cat'].value_counts(dropna=True, sort=False) 
counts 

OUT [21] [22]において

1.0 35773 
2.0  290 
3.0  8680 
4.0 18867 
Name: Call_cat, dtype: int64 

:= df2.groupby( 'Z1')[ 'Call_catグルーピング

'] .value_counts(dropna = True、sort = False)

Out [22]:

Z1 Call_cat 
ZLZO 1.0   2961 
     2.0   24 
     3.0   476 
     4.0   1221 
ZZRE 1.0   307 
     2.0   2 
     3.0   152 
     4.0   197 
ZZMB 1.0   904 
     3.0   198 
     4.0   906 

答えて

2

2つのグループ化列の値のすべての組み合わせからMultiIndexを作成し、このマルチインデックスでgroupby結果を再インデックスすることができます。 NaNの値を0で埋めます。

import pandas as pd 
# example data 
df = pd.DataFrame({'a':list('xxxyyy'), 'b':[1,2,3,1,2,2]}) 
# a b 
# 0 x 1 
# 1 x 2 
# 2 x 3 
# 3 y 1 
# 4 y 2 
# 5 y 2 

multi_index = pd.MultiIndex.from_product([df.a.unique(), df.b.unique()], 
             names=['a', 'b'])\ 
          .sort_values() 
df.groupby(['a','b']).size().reindex(multi_index).fillna(0).astype(int) 

これは

a b 
x 1 1 
    2 1 
    3 1 
y 1 1 
    2 2 
    3 0 
+0

美しい生産 - あなたに感謝を! – jerkbag

関連する問題