簡體   English   中英

根據Pandas中以豎線分隔的列創建多個新列

[英]Create Multiple New Columns Based on Pipe-Delimited Column in Pandas

我有一個pandas數據框,其中的管道分隔列包含任意數量的元素,稱為“零件”。 這些管道字符串中的元素數量從0到超過10不等。所有管道字符串中包含的唯一元素的數量並不比行數小很多(這使我無法在同時手動指定所有元素創建新列)。

對於每一行,我想創建一個新列,用作管道分隔列表的每個元素的指標變量。 例如,如果該行

... 'Parts'

... '12|34|56'

應該轉化為

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

... 1 1 1 ...

因為它們是很多獨特的部分,所以這些列顯然將是稀疏的-多數為零,因為每一行僅包含一小部分獨特的部分。

我還沒有找到不需要手動指定列的任何方法(例如, Pandas Dataframe:將列拆分為多列,右對齊不一致的單元格條目 )。 我還研究了熊貓的融化,但我認為這不是合適的工具。

我知道如何解決該問題的方法是將原始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_dummiesadd_prefix

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

輸出:

   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_')

輸出:

   Part_12  Part_34  Part_56
0        2        1        1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM