使用值的出现次数在熊猫中创建数据透视表

时间:2018-06-21 02:04:51

标签: python pandas numpy pivot pivot-table

我正在尝试在熊猫中创建交叉表/数据透视表:

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

1 个答案:

答案 0 :(得分:3)

切换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