【问题标题】:Group by and values_counts分组依据和 value_counts
【发布时间】:2019-12-18 06:33:24
【问题描述】:

我的 df 是这样的

session_id page_type
10001_0    a
10001_0    b
10001_0    b
10001_0    b
10001_0    c
10001_0    c
10002_0    a
10002_0    a
10002_0    b
10002_0    b
10002_0    c
10002_0    c

我想按'session_id'分组并计算值('a','b','c') 如:

session_id count_page_type
10001_0 {a:1,b:3,c:2}
10002_0 {a:2,b:2,c:2}

我不关心“count_page_type”列中的类型 它也可以是列表。 聚合在多个列上,

agg_dict = ({'uid':'first',
             'request_id':'unique',
             'sso_id':'first',
             'article_id' :['first','last','nunique'],
             'event_time':['min','max'],
             'session_duration':'sum',
             'anonymous_id':['first','nunique'],
             'platform':['first','nunique'],
             'brand':['first','last','nunique'],
             'user_type':['first','last'],
             'page_type':'value_counts'})
df.groupby('session_id').agg(agg_dict)

现在我遇到错误

ValueError: cannot insert page_type, already exists

有什么建议吗? 谢谢

【问题讨论】:

    标签: python-3.x pandas pandas-groupby


    【解决方案1】:

    value_counts 返回一个 pd.Series 而不仅仅是一行,尝试执行类似的操作:

    df.groupby('session_id').agg({'page_type': lambda x : x.value_counts().to_dict()})
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多