0

私はデータフレームを持っています:

product = DataFrame({'_product': ['shoes','dress','cap','shoes','purse','t-shirt','t-shirt','dress','t-shirt'], 
             'city': ['A','A','A','B','A','A','B','C','A'],
             'color':['red','black','black','white','black','green','white','yellow','blue'],
             'size':['36','S','M','40','-','L','L','M','S'],
             'param1':['x0001','x0008','x0006','x0002','x0001','x0009','x0011','x0003','x0001'],
             'param2':[23,1,367,689,35,97,100,44,15],
             'param3':['f1','t1','u7','f1','r4','f2','f2','t2','f4'],
             'counter':[1,1,1,1,1,1,1,1,1]})

table=product[['_product','city','color','size','param1','param2','param3','counter']]

申請中

pivot_product=pivot_table(table,values=['counter'],rows=['_product','city','color','size','param1','param2','param3'],aggfunc=[np.sum],fill_value=0,margins=True)

総計行のみ (「すべて」) のピボット テーブルを取得します。

これは架空のサンプルです。実際には、100,000 行と 20 列のテーブルをインポートします。

!! 製品レベルでの小計は絶対に必要です。

[フィールド設定] > [レイアウトと印刷] > [アイテム ラベルを表形式で表示] を使用して Excel ピボット テーブルと同じように、小計を含む行をこのテーブルに挿入する効率的な方法はありますか?

4

1 に答える 1

1

私は Excel でのその操作に慣れていませんが、製品ごとに小計を計算するためのワンライナーを次に示します。

In [43]: pivot_product['subtotals'] = pivot_product[('sum', 'counter')].groupby(level=0).transform(np.sum)

In [44]: pivot_product
Out[44]: 
                                                    sum  subtotals
                                                counter           
_product city color  size param1 param2 param3                    
cap      A    black  M    x0006  367    u7            1          1
dress    A    black  S    x0008  1      t1            1          2
         C    yellow M    x0003  44     t2            1          2
purse    A    black  -    x0001  35     r4            1          1
shoes    A    red    36   x0001  23     f1            1          2
         B    white  40   x0002  689    f1            1          2
t-shirt  A    blue   S    x0001  15     f4            1          3
              green  L    x0009  97     f2            1          3
         B    white  L    x0011  100    f2            1          3
All                                                   9          9

「カウンター」列の意味に応じて、np.size私が使用する場所が必要になる場合があります。np.count

于 2013-04-01T21:15:06.973 に答える