Pandas Python - 按分组值

时间:2016-08-26 17:49:06

标签: python pandas group-by

我的情况是多个客户ID可以属于同一个帐户,所有记录都分为两组:

CUSTOMER_ACCOUNT_ID     CUSTOMER_ID GROUP
123                          555    A
123                          556    A
124                          557    B
124                          558    B
125                          559    A

我想要做的是获取属于每个组的唯一CUSTOMER_ACCOUNT_ID的计数。也就是说,我不在乎有多少customer_ids属于某个帐户,我只想查看每个帐户中有多少个帐户。我正在寻找这个输出

GROUP   COUNT
A        2
B        1

即,按组分组的唯一帐户数。考虑它的一种方法是我想要折叠或删除CUSTOMER_ID维度,所以我留下了

CUSTOMER_ACCOUNT_ID     GROUP
123                       A
124                       B
125                       A

然后执行GROUP的值计数,但我不确定如何处理此问题。我确实找到了一种丑陋的方式来做这件事,但我对使用R的熊猫不熟悉,所以我猜测那是一种更直接的方式,我还不知道...... < / p>

2 个答案:

答案 0 :(得分:3)

您可以在分组后使用nunique()方法:

df.groupby('GROUP')['CUSTOMER_ACCOUNT_ID'].nunique().reset_index()

# GROUP CUSTOMER_ACCOUNT_ID
# 0   A                   2
# 1   B                   1

答案 1 :(得分:2)

这是你想要实现的吗?

In [103]: df.drop_duplicates(['CUSTOMER_ACCOUNT_ID', 'GROUP']).drop('CUSTOMER_ID', 1)
Out[103]: 
   CUSTOMER_ACCOUNT_ID GROUP
0                  123     A
2                  124     B
4                  125     A