【发布时间】:2017-06-24 00:38:34
【问题描述】:
我有这个交易数据框,每笔交易都有一个客户,他有一张信用卡,每个客户最多可以有 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
我怎么去那里?
【问题讨论】:
-
所以您不想要每月的购买次数,您想要在给定月份中至少购买一次的客户数量?
-
对,比如一月份,如果一个顾客用两张信用卡买了两次,我只想算他一次,因为他只是一个人,我不在乎他有两张信用卡。行的逻辑相同。
-
那我想你想改变你的 aggfunc....
-
但是所有的值都可以,我只是想改变总计的逻辑