首页 > 解决方案 > 我需要将列列表中的每个元素转换为 python pandas 中的新列

问题描述

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

   Name   Hobbies
0  Paul   ["Watch_NBA", "Play_PS4"]
1  Jeff   ["Play_hockey", "Read", "Play_PS4"]
2  Kyle   ["Sleep", "Watch_NBA"]

我需要在新列中转换列表的每个元素,如果它出现在原始列表中,则分配 0 或 1 的值。结果显示如下:

   Name   Watch_NBA  Play_PS4 Play_hockey Read Sleep
0  Paul       1          1        0        0     0
1  Jeff       0          1        1        1     0
2  Kyle       1          0        0        0     1

有人知道我怎么能做到这一点。请记住,我将在专栏中使用很多爱好,因此它显示出一些自动化而不是硬编码。谢谢!!!

标签: pythonpandas

解决方案


你想要的get_dummies()方法。文档在这里

对于您的示例:

names = df.Name
df = pd.get_dummies(df.Hobbies.apply(pd.Series).stack()).sum(level=0)
df.insert(0, 'Name', names)

#output:
   Name  Play_PS4  Play_hockey  Read  Sleep  Watch_NBA
0  Paul         1            0     0      0          1
1  Jeff         1            1     1      0          0
2  Kyle         0            0     0      1          1

推荐阅读