groupby 结果到自定义数据框

Posted

技术标签:

【中文标题】groupby 结果到自定义数据框【英文标题】:groupby results to custom dataframe 【发布时间】: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'] 均不在列中

【问题讨论】:

【参考方案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')

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

【讨论】:

以上是关于groupby 结果到自定义数据框的主要内容,如果未能解决你的问题,请参考以下文章

Plotly:如何使用 pandas 数据框定义 sankey 图的结构?

将数据从 Firebase 传输到自定义信息窗口

vue表单必填项前面添加红色*

arcgispro导入坐标重叠

RxSwift 不将数据绑定到自定义集合视图单元格

使用 RestKit 将 NSManagedObject 实体映射到自定义类