如何在 Python 中对每列的唯一值求和? [复制]

Posted

技术标签:

【中文标题】如何在 Python 中对每列的唯一值求和? [复制]【英文标题】:How do I sum unique values per column in Python? [duplicate] 【发布时间】:2019-01-21 09:02:11 【问题描述】:

我正在使用博客,并且拥有包含 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】:
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

【讨论】:

在您的脚本中,您将 account_id 与会话 ID 混合在一起,但我期望的数字仍然不正确。在 account_id 1111 中,有 2 个 UNIQUE 会话,尽管有 5 个事件。我正在尝试计算每个帐户的唯一会话数,而不是会话总数。 好吧,让我再写一次代码 看到我更新了 非常感谢您的帮助,它确实有效! 你能接受答案吗?

以上是关于如何在 Python 中对每列的唯一值求和? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python pandas 对每列求和时少了一列

如何获取 HIVE/PySpark 表中每一列的唯一值?

python pandas 对分组并对每列求和时少了一列

SonataAdminBundle 如何在列表视图中对列的值求和

如何在Python中对包含分类变量的列的行数求和[重复]

SQLPLUS 输出:如何自动获取每列的最小列宽?