python - 我需要将列列表中的每个元素转换为 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
有人知道我怎么能做到这一点。请记住,我将在专栏中使用很多爱好,因此它显示出一些自动化而不是硬编码。谢谢!!!
解决方案
你想要的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
推荐阅读
- rabbitmq - NServiceBus 延迟重试仅在一个队列上配置
- ibm-midrange - SYSPARTITIONSTAT 中缺少 PF
- c# - Visual Studio 中的静默错误 SQL80001(SQL Server 工具)
- python - 将 JSON 对象导入 MySQL 列的问题
- spring-boot - 将 Svelte 捆绑为带有资产(如图像、svg 文件)的 Web 组件
- r - 如何在R中分别从不同水文年的多个站点的每日时间序列数据集中计算年平均温度?
- cordova - Cordova 如何在更改时查看文件并重建
- python - Tkinter 完美正方形的 X 和 Y 是多少?
- user-interface - 如何在 gitlab-ci 上启动一个 selenoid?
- python - Pandas:在组之前和之后动态添加行