我正在尝试做一个看似非常简单的任务。 给定一个数据框:
daf = pd.DataFrame({'co':['g','r','b','r','g','r','b','g'],'sh ':[' C”, 'S', 'R', 'R', 'R', 'S', 'C', 'R']})
co sh 0 g c 1 r s 2 b r 3 r r 4 g r 5 r s 6 b c 7 g r
我想计算具有'co'和'sh'值的唯一组合的记录数,并输出为包含行['g','r','b']和列[''的表格C”, 'S', 'R']
c s r g 1 0 2 r 0 1 1 b 1 0 1
可以使用pivot_table完成吗?
谢谢,
答案 0 :(得分:5)
使用pandas.crosstab
:
>>> pandas.crosstab(d.co, d.sh)
sh c r s
co
b 1 1 0
g 1 2 0
r 0 1 2
您可以使用pivot_table
执行此操作,但是如果缺少组合,它将为您提供NaN而不是0。您需要指定len
作为聚合函数:
>>> d.pivot_table(index='co', columns='sh', aggfunc=len)
sh c r s
co
b 1 1 NaN
g 1 2 NaN
r NaN 1 2