【发布时间】:2017-12-28 15:24:01
【问题描述】:
我有一个带有管道分隔列的 pandas 数据框,其中包含任意数量的元素,称为 Parts。这些管道串中的元素数量从 0 到超过 10 个不等。所有管道串中包含的唯一元素的数量并不比行数小很多(这使得我无法手动指定所有这些元素,而创建新列)。
对于每一行,我想创建一个新列,作为管道分隔列表中每个元素的指示变量。例如,如果行
...'Parts'...
...'12|34|56'
应该转化为
...'Part_12' 'Part_34' 'Part_56'...
...1 1 1...
因为它们是许多独特的部分,所以这些列显然是稀疏的 - 大部分是零,因为每一行只包含一小部分独特的部分。
我没有找到任何不需要手动指定列的方法(例如,Pandas Dataframe: split column into multiple columns, right-align inconsistent cell entries)。 我也看过 pandas 的融化,但我认为那不是合适的工具。
我知道如何解决它的方法是将原始 CSV 传输到另一个 python 脚本并逐个字符地处理它,但我需要在现有脚本中工作,因为我将处理数百个以这种方式保存 CSV。
这里有一个更好的数据说明
ID YEAR AMT PARTZ
1202 2007 99.34
9321 1988 1012.99 2031|8942
2342 2012 381.22 1939|8321|Amx3
【问题讨论】: