Python 数据帧的简单透视表
我试图做一件看起来很简单的事情。 给定一个数据帧: daf=pd.DataFrame({'co':['g','r','b','r','g','r','b','g'],'sh':['c','s','r','r','s','c','r']}) 我想计算具有“co”和“sh”值的唯一组合的记录数,并将其输出为一个表,其中包含行['g'、'r'、'b']和列['c'、's'、'r'] 可以使用pivot_表完成吗Python 数据帧的简单透视表,python,pandas,dataframe,pivot-table,Python,Pandas,Dataframe,Pivot Table,我试图做一件看起来很简单的事情。 给定一个数据帧: daf=pd.DataFrame({'co':['g','r','b','r','g','r','b','g'],'sh':['c','s','r','r','s','c','r']}) 我想计算具有“co”和“sh”值的唯一组合的记录数,并将其输出为一个表,其中包含行['g'、'r'、'b']和列['c'、's'、'r'] 可以使用pivot_表完成吗 谢谢,使用熊猫可以更简单地完成。交叉表: >>> pandas.cros
谢谢,使用熊猫可以更简单地完成。交叉表:
>>> 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
>>> pandas.crosstab(d.co, d.sh)
sh c r s
co
b 1 1 0
g 1 2 0
r 0 1 2
>>> 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