我是熊猫和groupby功能的新手。
我有如下所示的数据框,它是客户的交易数据,如下所示,我想根据其总Dprtmnt
来找出每个Cus_No
的前两个Amount
。
Cus_No Date Dprtmnt Amount
111 6-Jun-18 AAA 100
111 6-Jun-18 AAA 50
111 8-Jun-18 BBB 125
111 8-Aug-18 CCC 130
111 12-Dec-18 BBB 200
111 15-Feb-17 AAA 10
111 18-Jan-18 AAA 20
222 6-Jun-18 DDD 100
222 6-Jun-18 AAA 50
222 8-Jun-18 AAA 125
222 8-Aug-18 DDD 130
222 12-Dec-18 AAA 200
222 15-Feb-17 CCC 10
222 18-Jan-18 CCC 20
我的预期输出如下所示。
Cus_No Top1D Top1Sum Top1_Frqnc Top2D Top2Sum Top2_Frqnc
111 BBB 325 2 AAA 180 4
222 AAA 375 3 DDD 230 2
答案 0 :(得分:1)
首先通过GroupBy.agg
与sum
和size
进行汇总,通过GroupBy.head
进行排序并获得top2,最后通过DataFrame.unstack
进行整形并通过{创建新的列名称{1}}和map
:
join