【问题标题】:groupby results to custom dataframegroupby 结果到自定义数据框
【发布时间】:2021-01-12 04:41:17
【问题描述】:

我有以下数据样本。我想使用d=df.groupby(['id2','type','id1']).sum()['clicks']d=df.groupby(['id2','type','id1']).agg({'clicks':'sum'} 进行分组。 id2 是用户 ID。有很多种类型,每种都有不同的 id。我想使用 groupby 的结果并制作一个数据透视表。新表索引为 id2,列将是列类型的值 I。这些值将是每种类型的点击次数之和。

df = pd.DataFrame({"id1": [493,303,814,810,303,930,821,493,303,814],
                   "module": ["DDD", "DDD", "AAA", "BBB", "DDD","CCC", "CCC", "DDD", "AAA","DDD"],
                   "present": ["13J", "14J", "13J", "14B", "13B","13J", "14J", "13J", "14B","13B"],
                   "id2": [516, 516, 516, 388, 388,388, 388, 388,695,386],
                   "type": ["t1", "t2", "t3", "t3","t2", "t4", "t3", "t1","t2","t3"],
                   "clicks": [3,6,2,1,3,1,2,2,5,1]})

我试过了 pivoted_t=d.pivot(index='id2',columns='type'),但我收到此错误 ['id2', 'type'] 均不在列中

【问题讨论】:

    标签: pandas dataframe pandas-groupby pivot-table


    【解决方案1】:

    您可以从原始数据中pivot_table

    df.pivot_table(index=['id2','id1'], columns='type', values='clicks', aggfunc='sum')
    

    输出:

    type      t1   t2   t3   t4
    id2 id1                    
    386 814  NaN  NaN  1.0  NaN
    388 303  NaN  3.0  NaN  NaN
        493  2.0  NaN  NaN  NaN
        810  NaN  NaN  1.0  NaN
        821  NaN  NaN  2.0  NaN
        930  NaN  NaN  NaN  1.0
    516 303  NaN  6.0  NaN  NaN
        493  3.0  NaN  NaN  NaN
        814  NaN  NaN  2.0  NaN
    695 303  NaN  5.0  NaN  NaN
    

    或者从你的 groupby 结果中,做一个 unstack:

    d['clicks'].unstack('type')
    

    这也为您提供相同的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-06
      • 2017-06-16
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      相关资源
      最近更新 更多