基于 Pandas 中的管道分隔列创建多个新列

2024-04-29

我有一个 pandas 数据框,其中有一个管道分隔的列,其中包含任意数量的元素,称为“零件”。这些管道串中的元素数量从 0 到超过 10 个不等。所有管道串中包含的唯一元素的数量并不比行数小很多(这使得我无法在创建新列)。

对于每一行,我想创建一个新列,充当管道分隔列表中每个元素的指示变量。例如,如果行

...'Parts'...

...'12|34|56'

应该转化为

...'Part_12' 'Part_34' 'Part_56'...

...1 1 1...

因为它们有很多独特的部分,所以这些列显然会很稀疏 - 大部分为零,因为每行只包含一小部分独特的部分。

我还没有找到任何不需要手动指定列的方法(例如,Pandas Dataframe:将列拆分为多列,右对齐不一致的单元格条目 https://stackoverflow.com/questions/23317342/pandas-dataframe-split-column-into-multiple-columns-right-align-inconsistent-c)。 我也研究了熊猫的融化,但我认为这不是合适的工具。

我知道如何解决这个问题的方法是将原始 CSV 通过管道传输到另一个 python 脚本,并逐个字符地处理它,但我需要在现有脚本中工作,因为我将处理数百个 CSV这种方式。

这是数据的更好说明

ID YEAR AMT PARTZ

1202 2007 99.34

9321 1988 1012.99 2031|8942

2342 2012 381.22 1939|8321|Amx3


您可以使用get_dummies and add_prefix:

df.Parts.str.get_dummies().add_prefix('Part_')

Output:

   Part_12  Part_34  Part_56
0        1        1        1

编辑评论并计算重复项。

df = pd.DataFrame({'Parts':['12|34|56|12']}, index=[0])
pd.get_dummies(df.Parts.str.split('|',expand=True).stack()).sum(level=0).add_prefix('Part_')

Output:

   Part_12  Part_34  Part_56
0        2        1        1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 Pandas 中的管道分隔列创建多个新列 的相关文章

随机推荐

  • 通过 ant 构建脚本将命令行参数传递给 Java

    运行以下命令时 ant targetname Dk1 v1 Dk2 v2 我想要将命令行参数传递给java like java whatever Dk1 v1 Dk2 v2 我需要从 Java 代码访问这些参数System getPrope
  • 当线程无法访问所有已用堆时查找 Java 内存泄漏

    我正在研究基于 Java 的大型系统中潜在的内存泄漏 或至少是内存浪费 JVM 运行时的最大堆大小为 5 GB 2 3GB 堆使用量是应用程序的预期基准 可能会有更高的峰值 在我正在调查的过载场景中 堆被填满 使用 Eclipse Memo
  • 如何在 Pygame 中制作边框

    我试图让游戏的某个区域周围有边框 并使用一种尺寸来不断更改我的代码 以便它适用于一种尺寸 这是代码 screen xpos ypos height width border width color def draw borders s x
  • H2O R 中的子集化

    我有一个 h2o 对象 子集的标准 R sub1 lt trans trans Type 1 我在水中也尝试过同样的方法 它不工作 sub1 lt trans trans Type 1 我也尝试过 sub1 lt h2o exec tran
  • ViewPager 具有不同的纵向和横向适配器

    在纵向模式下 我的ViewPager有 3 个片段 A B C 但在横向模式下 它只有 2 个片段 A 和 C 所以我创建了 2 个FragmentStatePagerAdapters 代表每种模式 问题是当屏幕方向改变时 ViewPage
  • 我可以将 Selenium WebDriver 与 Google Cloud Functions 结合使用吗?

    我正在尝试使用 Selenium 构建解决方案 我可以使用 Firebase Functions 通过 Selenium 初始化和加载网页吗 我发现一些资源说 不 然而他们没有给出任何来源 而且他们已经4岁了 在 Cloud Functio
  • nuget 创建两个包文件夹?

    OK 所以我最近重新安装了Windows 10并升级了vs2013 gt vs2015 此时我试图获取几个 nuget 包 我遇到的问题是 我有一个 nuget packages 文件夹 其级别与我的解决方案文件 通过 NuGet conf
  • 如何使用 C# 更新 Active Directory 属性。

    如何使用 C 更新 Active Directory 属性 就我而言 我有以下情况 对于每个用户都有一个WhenCreatedAD 中的属性 但我想要的是 如果whenDate设置的时间少于 30 天info归因于NEW在活动目录中 我怎样
  • uWSGI重启时停机

    每次当我有代码更新时重新启动服务器时 我都会遇到 uwsgi 问题 当我使用 sudo restart account 重新启动 uwsgi 时 停止和启动实例之间存在一个小间隙 导致停机并停止所有当前请求 当我尝试 sudo reload
  • UIAlertController 的警报无法关闭它

    我正在创建警报 但当用户按 确定 时无法将其关闭 我收到以下错误 2017 12 28 07 03 50 301947 0400 Prestamo 691 215874 API 错误 返回 0 宽度 假设 UIViewNoIntrinsic
  • 龙卷风网络和线程

    我是 Tornado 和 Python 线程的新手 我想要实现的目标如下 我有一个龙卷风网络服务器 它接受用户的请求 我想在本地存储一些数据 并定期将其作为批量插入写入数据库 import tornado ioloop import tor
  • 跨浏览器可拉伸圆角,具有语义代码和最少的图像使用。是否可以?

    我知道如果没有 Javascript 或图像 IE 不可能制作圆角 如果禁用 js JS 解决方案将无法工作 所以我想使用图像选项 我需要任何图像 css解决方案来使跨浏览器兼容圆角divminimal 容易制作和纯粹的semantic a
  • C++ Redistributable 14 与 VS2017 C++ Redistributable 冲突

    我重建了一台笔记本电脑 并在此过程中安装了 VS2017 其中包括安装 C 2017 Redistributable x64 14 10 24728 我尝试安装其他使用 C Redist 14 的应用程序 但它们失败并显示错误消息 该产品的
  • 为什么内联声明不是不完整类型?

    考虑下面的代码 struct Foo struct Bar Foo Bar bar Why isn t Bar an incomplete type struct Bar Full definition struct Bar fails t
  • 在heroku上部署git子目录

    我必须从非主分支部署 git 子目录 我看过这个答案 https stackoverflow com questions 7539382 how can i deploy from a git subdirectory and to Her
  • BackupAgent:“无法恢复包...”

    我已经实现了 BackupAgent 如下所述数据备份 http developer android com guide topics data backup html 注册了一个 API 密钥并在我的 Manifest 中声明了 Back
  • 如何在 AWS Glue 中使用 Spark 包?

    我想使用 DatastaxSpark Cassandra 连接器 https mvnrepository com artifact com datastax spark spark cassandra connector 2 12 2 5
  • 如何让我的精灵向鼠标位置发射一个对象?

    对于一个学校项目 我需要通过实现一种向鼠标位置射击 Kunais Shurikens 的方式来完成下面的 pygame 程序 以便能够击中敌人精灵 import pygame import math import random from p
  • 重新排列关联数组的最优雅的方法是什么?

    假设你有一个关联数组 hash Fruit Apple hash Name Jeff hash Car Ford 并且您无法更改这些变量的创建顺序 因此 Car 总是在 Name 等之后添加到数组中 将 Car 添加 移动到关联数组的开头而
  • 基于 Pandas 中的管道分隔列创建多个新列

    我有一个 pandas 数据框 其中有一个管道分隔的列 其中包含任意数量的元素 称为 零件 这些管道串中的元素数量从 0 到超过 10 个不等 所有管道串中包含的唯一元素的数量并不比行数小很多 这使得我无法在创建新列 对于每一行 我想创建一