python - Pandas |在列中列出到二进制列

标签 python pandas dataframe

我有以下数据框:

+------------+------------------+
| item       | categories       |
+------------+------------------+
| blue_shirt | ['red', 'white'] |
+------------+------------------+
| red_skirt  | ['blue', 'red']  |
+------------+------------------+

我想得到这个:

+------------+-----+-------+------+
| item       | red | white | blue |
+------------+-----+-------+------+
| blue_shirt | 1   | 1     | 0    |
+------------+-----+-------+------+
| red_skirt  | 1   | 0     | 1    |
+------------+-----+-------+------+

这是我尝试过的:

orders = orders.join(pd.get_dummies(orders['Categories'].explode()))

它创建了正确的列,但它也创建了(很多)额外的行。我希望每个项目最后一行,如上例所示。

最佳答案

你也可以使用 pandas 的 .str 方法用一行代码解决这个问题

df['categories'].str.join('|').str.get_dummies()

“类别” 列的每个单元格内的格式必须是一个列表。如果它是其他字符串,您可以使用 .apply 函数将其设为列表。例如,如果 'categories' 列的内容是一个保存为字符串的列表:

df['categories'].apply(lambda x: eval(x)).str.join('|').str.get_dummies()

关于python - Pandas |在列中列出到二进制列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66940757/

相关文章:

python - 需要帮助理解这个 Python Viterbi 算法

python - DataLoader 不在 PyTorch 中随机采样

python-3.x - 如何通过匹配 Pandas 中两个不同数据帧中的列来更新一个数据帧的列

python - 在 pandas 中切片 DataFrame?

python - 当用户提供某个关键字作为输入时结束函数

python - 谷歌云功能 - ImportError : cannot import name 'pubsub' from 'google.cloud' (unknown location)

python-2.7 - 使用 Pandas 对二维数据框进行排序

python - 将多个子字符串匹配模式提取到列中

r - 如果条目出现的次数少于 x 次,则删除数据框中的行

python - pandas:如何检查一列中的重复值并从另一列创建值的成对列表