Python 数据帧二进制编码

发布于 2025-01-13 08:40:12 字数 369 浏览 1 评论 0原文

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

UserProduct
1a
1b
2a
2c
3b

我想要每个用户 1 行,其中产品作为列,如果用户是否购买了该产品,它会给出 1 或 0,如何才能我做这个?

I have a dataframe that looks like this:

UserProduct
1a
1b
2a
2c
3b

I want 1 row per user with the products as columns where it gives a 1 or 0 if the user purchased the product or not, how can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

幸福%小乖 2025-01-20 08:40:13
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
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
一抹微笑 2025-01-20 08:40:12

您正在寻找的是“交叉制表”或只是<交叉表。 Pandas 有 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

What you are looking for is "cross tabulation" or simply crosstab. Pandas has pd.crosstab for the same.

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

Product  a  b  c
User            
1        1  1  0
2        1  0  1
3        0  1  0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文