如何在Python中对每列的唯一值求和?

时间:2018-08-14 13:21:40

标签: python pandas pandas-groupby

我正在使用网络日志,并且有包含account_id和session_id的数据。多个会话可以与一个帐户关联。我想创建一个包含account_id的新数据框,并计算与该帐户关联的唯一会话数。我的df看起来像这样:

account_id session_id
 1111          de322
 1111          de322
 1111          de322
 1111          de323
 1111          de323
 0210          ge012
 0210          ge013
 0211          ge330
 0213          ge333

我正在使用以下代码:

new_df = df.groupby(['account_id','session_id']).sum()

我得到的输出如下:

 account_id     sessions
 1111           de322
                de323
 0210           ge012 
                ge013 
 0211           ge330
 0213           ge333

我期望的输出

account_id   sessions
 1111           2
 0210           2  
 0211           1
 0213           1

我应该如何解决?

1 个答案:

答案 0 :(得分:0)

df = pd.DataFrame({'session': ['de322', 'de322', 'de322', 'de323', 'de323', 'ge012', 'ge012', 'ge013', 'ge333'],
                   'user_id': [1111, 1111, 1111, 1111, 1111, 210, 210, 210, 211],
                   })
print(df)


df = df.drop_duplicates().groupby('user_id').count()
print(df)

输出:

user_id
210     2
211     1
1111    2