【问题标题】:How to pivot table and aggregate on multiple columns? [duplicate]如何在多个列上透视表和聚合? [复制]
【发布时间】:2020-08-21 13:34:27
【问题描述】:

我有一个如下所示的数据框:

pd.DataFrame({"id": [1,2,2,1], "col1": ['a', 'b', 'c', 'b'], "col2": ['z', 'c', 'a', 'd'], "col3": ['d','a','d','z']})

    id  col1    col2    col3
0   1   a       z       d
1   2   b       c       a
2   2   c       a       d
3   1   b       d       z

我想把它变成这样:

    id  a   b   c   d   z
0   1   1   1   0   2   2
1   2   2   1   2   1   0

换句话说,对于每个 id,我想知道 col1、col2 和 col3 中每个值的出现次数。

我发现了这个几乎类似的问题 (Pivot Tables or Group By for Pandas?),但据我所知,它不适用于多列。

【问题讨论】:

标签: pandas pivot-table


【解决方案1】:

使用DataFrame.meltcrosstab,最后一次数据清理DataFrame.rename_axisDataFrame.reset_index

df1 = df.melt('id')
df = pd.crosstab(df1['id'], df1['value']).rename_axis(None, axis=1).reset_index()
print (df)
   id  a  b  c  d  z
0   1  1  1  0  2  2
1   2  2  1  2  1  0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2013-01-19
    • 1970-01-01
    相关资源
    最近更新 更多