9

私はパンダでいくつかのクロス集計を作成しています:

a = np.array(['foo', 'foo', 'foo', 'bar', 'bar', 'foo', 'foo'], dtype=object)
b = np.array(['one', 'one', 'two', 'one', 'two', 'two', 'two'], dtype=object)
c = np.array(['dull', 'dull', 'dull', 'dull', 'dull', 'shiny', 'shiny'], dtype=object)

pd.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'])

b     one   two       
c    dull  dull  shiny
a                     
bar     1     1      0
foo     2     1      2

しかし、私が実際に欲しいのは次のとおりです。

b     one        two       
c    dull  shiny dull  shiny
a                     
bar     1     0    1      0
foo     2     0    1      2

新しい列を追加してレベルを新しいMultiIndexとして設定することで回避策を見つけましたが、難しいようです...

MultiIndex を crosstabs 関数に渡して出力列を事前定義する方法はありますか?

4

2 に答える 2

7

クロス集計関数には、デフォルトで True に設定されている dropna というパラメーターがあります。このパラメーターは、空の列 (1 つ光沢のある列など) を表示するかどうかを定義します。

次のように関数を呼び出してみました:

pd.crosstab(a, [b, c], rownames=['a'], colnames=['b', 'c'], dropna = False)

これは私が得たものです:

b     one          two       
c    dull  shiny  dull  shiny
a                            
bar     1      0     1      0
foo     2      0     1      2

それでも役に立ったことを願っています。

于 2014-01-14T10:18:33.170 に答える