【问题标题】:create pivot table in pandas using count of occurrence of value [duplicate]使用值的出现计数在熊猫中创建数据透视表[重复]
【发布时间】:2018-11-30 05:51:33
【问题描述】:

我正在尝试在 pandas 中创建跨表/数据透视表:

import pandas as pd
import numpy as np

df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two','two'],'bar': ['A', 'A', 'C', 'B', 'B', 'C']})

但是我的尝试是:

pd.pivot(df, index='foo', columns='bar')

TypeError:pivot_simple() 为参数 'index' 获取了多个值

第二个:

pd.pivot_table(data = df, values = 'bar', index = 'bar', columns = 'foo', aggfunc=lambda x: np.count_nonzero(x))

foo one two
bar     
A   4.0 NaN
B   NaN 4.0
C   2.0 2.0

我希望实现的输出如下:

        A   B   C
one     2       1
two        2    1

【问题讨论】:

    标签: python pandas numpy pivot pivot-table


    【解决方案1】:

    切换columnindex 并将len 用作aggfunc

    df.pivot_table(index='foo', columns='bar', values='foo', aggfunc=len, fill_value=0)
    
    #bar  A  B  C
    #foo         
    #one  2  0  1
    #two  0  2  1
    

    或者直接使用pd.crosstab:

    pd.crosstab(df.foo, df.bar)
    
    #bar  A  B  C
    #foo         
    #one  2  0  1
    #two  0  2  1
    

    【讨论】:

    • 成功了,pd.crosstab 很有魅力!!!
    猜你喜欢
    • 1970-01-01
    • 2018-08-29
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2021-02-28
    相关资源
    最近更新 更多