我有一个Pandas DataFrame,其类别信息存储在一列中,像这样(只有2个类别,但有很多项):
| index | item | category |
|-------|-----------|----------|
| 0 | water | drink |
| 1 | pasta | food |
| 2 | burger | food |
| 3 | pepsi | drink |
| 4 | chocolate | food |
我想创建一个掩码DataFrame,但是我不想使用类别名称,而是希望将每个项目既作为行又作为列。相同类别的项目的条目数为1,否则为0:
| item | water | pasta | burger | pepsi | chocolate |
|-----------|-------|-------|--------|-------|-----------|
| water | 1 | 0 | 0 | 1 | 0 |
| pasta | 0 | 1 | 1 | 0 | 1 |
| burger | 0 | 1 | 1 | 0 | 1 |
| pepsi | 1 | 0 | 0 | 1 | 0 |
| chocolate | 0 | 1 | 1 | 0 | 1 |
在Pandas中最有效的方法是什么?我不知道是否有一个快速的解决方法,因为在我能找到的所有文档示例中,布尔型掩码都使用类别名称作为列标题(而不是将项目本身同时作为列和行)。
答案 0 :(得分:1)
我的评论不正确,这需要进行一些预处理
首先,在类别上为 Route 2
:
Route 2
merge
df1 = df.merge(df, on='category')