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

Jak*_*rne 2 python pivot numpy pivot-table 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']})
Run Code Online (Sandbox Code Playgroud)

但是我的尝试是:

pd.pivot(df, index='foo', columns='bar')
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我想要实现的输出如下:

        A   B   C
one     2       1
two        2    1
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 5

切换columnindexlen用作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
Run Code Online (Sandbox Code Playgroud)

或者只是使用pd.crosstab

pd.crosstab(df.foo, df.bar)

#bar  A  B  C
#foo         
#one  2  0  1
#two  0  2  1
Run Code Online (Sandbox Code Playgroud)

  • 钉上它,pd.crosstab很有魅力!!! (2认同)