我正在尝试在熊猫中创建交叉表/数据透视表:
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
答案 0 :(得分:3)
切换column
和index
并将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