Python 数据帧二进制编码

Python Dataframe Binary Encoding

我有一个如下所示的数据框:

User Product
1 a
1 b
2 a
2 c
3 b

我希望每个用户有 1 行,产品作为列,如果用户购买或不购买产品,它会给出 1 或 0,我该怎么做?

df.pivot_table(index="User", columns="Product", aggfunc=len).fillna(0)

# Result:

Product    a    b    c
User                  
1        1.0  1.0  0.0
2        1.0  0.0  1.0
3        0.0  1.0  0.0

您要查找的是“cross tabulation" or simply crosstab. Pandas has pd.crosstab 相同。

pd.crosstab(df['User'], df['Product'])

Product  a  b  c
User            
1        1  1  0
2        1  0  1
3        0  1  0