0
私はこのトランザクションのデータフレームを持っています。各取引にはクレジットカードがあり、各顧客は3つまでのクレジットカード(ブロンズ、シルバー、ゴールド)を持ち、同じ月のクレジットカード、および別の月に同じクレジットカードで購入された他の顧客が含まれます。ユニークな合計を持つパンダのピボットテーブル
CUST_CODE CATEGORY MONTH PURCHASED
4111 BRONZE JAN 1
6326 SILVER FEB 1
4666 GOLD JAN 1
8062 BRONZE JAN 1
FEB 1
SILVER JAN 1
FEB 1
9393 BRONZE JAN 1
1021 SILVER FEB 1
JAN 1
9244 BRONZE JAN 1
7963 SILVER FEB 1
GOLD JAN 1
FEB 1
2962 BRONZE JAN 1
2893 SILVER FEB 1
同時に、列の合計は、顧客をカウントする必要があり、私はピボットテーブルを作成したいが、私は(彼はいくつかのカードを持っているとしても)一度だけの顧客をカウントする行の合計を必要とします一度だけ(顧客が数ヶ月で購入した場合であっても)
これは、通常のピボットテーブルです:
df = df.pivot_table(index='CATEGORY', columns='MONTH', values='CUST_CODE',
aggfunc='count', margins=True, margins_name='TOTAL')
CATEGORY JAN FEB Grand Total
BRONZE 5 1 6
GOLD 2 1 3
SILVER 2 5 7
TOTAL 9 7 16
しかし、これは、私が本当にしたい出力され、行と列の両方の合計が等しくなることに注意してくださいユニーク顧客総数(10):
CATEGORY JAN FEB Grand Total
BRONZE 5 1 5
GOLD 2 1 1
SILVER 2 5 4
TOTAL 6 4 10
どうすれば入手できますか?
ですから、数または月ごとの購入を望んでいない、あなたは、与えられた月内の少なくとも1つの購入に顧客の数をしたいですか? – jknupp
たとえば、Janの場合、顧客が2枚のクレジットカードで2回購入した場合、彼は1人だけのため合計で1回カウントします。クレジットカードが2枚あるかどうかは気にしません。行に対しても同じロジックです。 – syrup
あなたはあなたのaggfuncを変更したいと思っています.... – jknupp