Pandas 如何获得两个分类变量之间的关系(百分比)?

Pandas 如何获得两个分类变量之间的关系(百分比)?,pandas,crosstab,Pandas,Crosstab,我有这个数据框: id product_type color A11 A blue B11 B blue C11 A red D11 C red E11 C black F11 C r

我有这个数据框:

id        product_type        color
A11       A                   blue
B11       B                   blue
C11       A                   red
D11       C                   red
E11       C                   black
F11       C                   red
G11       A                   black
H11       A                   red
我试图得到每种产品类型中每种颜色的百分比

我希望这样:

product_type       black        blue       red
A                  0.25         0.25       0.50
B                  0.00         1.00       0.00
C                  0.33         0.00       0.67
我试过两件事,第一件:

gr = df.groupby(["product_type", "color"]).size()
(gr / gr.groupby(level=0).sum())
它实际上是有效的,但我认为输出不是很可读。所以我决定试试这个:

pd.crosstab(df.product_type, df.color)
但后来我又犯了另一个错误:

TypeError: 'DataFrame' objects are mutable, thus they cannot be hashed
所以我有点被困在这里了…

对于我来说,使用
规范化
参数很好:

df = pd.crosstab(df.product_type, df.color, normalize=0)
print (df)
color            black  blue       red
product_type                          
A             0.250000  0.25  0.500000
B             0.000000  1.00  0.000000
C             0.333333  0.00  0.666667

你的熊猫版本是什么?太奇怪了,我还是会出错。您使用的熊猫版本是什么?@dsbr\uu 0-pandas
1.2.3