计算每个组的唯一值和小计

问题描述 投票:0回答:1

我有一个简单的数据框,如下所示:

import pandas as pd
import numpy as np
df = pd.DataFrame({'BR_NM': ['HN', 'HN', 'HP'], 
                   'CUS_ID': ['12345', '12345', '12345'],
                   'ACC_ID': ['12345_1', '12345_2', '12345_3'],
                   'REGION': ['North', 'North', 'North'], 
                   'CUS_TYPE': ['Individual', 'Individual', 'Individual']})
df
BR_NM   CUS_ID  ACC_ID  REGION  CUS_TYPE
HN      12345   12345_1 North   Individual
HN      12345   12345_2 North   Individual
HP      12345   12345_3 North   Individual

我想根据

CUS_ID
计算唯一的
BR_NM
,然后根据
REGION
求和。就我而言,这只是一个拥有三个帐户的客户,但我想将其算作两个客户。以下是我想要的输出:

REGION  CUS_TYPE    North
0      Individual   2

如果我使用

pivot_table
aggfunc = pd.Series.nunique
它就算作 1。

df2 = pd.pivot_table(df, values='CUS_ID', columns='REGION', index='CUS_TYPE', aggfunc=pd.Series.nunique).reset_index()

谢谢你。

python pandas pivot
1个回答
0
投票

这只是一个拥有三个帐户的客户,但我想将其算作两个客户。

根据 drop_duplicates

BR_NM 使用
CUS_ID
 来获取唯一记录:

>>> (df.drop_duplicates(['BR_NM', 'CUS_ID'])
       .value_counts(['REGION', 'CUS_TYPE'])
       .unstack('REGION').reset_index())

REGION    CUS_TYPE  North
0       Individual      2
© www.soinside.com 2019 - 2024. All rights reserved.