這個問題在這里已經有了答案: 根據值將 Pandas 串列列拆分為多個列 (2 個答案) 3 小時前關閉。
假設我們有這個資料框:
| ID | 類別 |
|---|---|
| 0 | ['一個'] |
| 1個 | ['A', 'C'] |
| 2個 | ['B', 'C'] |
我想將一個熱編碼器應用于類別列。我想要的結果是
| ID | 一個 | 乙 | C |
|---|---|---|---|
| 0 | 1個 | 0 | 0 |
| 1個 | 1個 | 0 | 1個 |
| 2個 | 0 | 1個 | 1個 |
我知道它很容易編碼。我只想知道這個功能是否已經在某個包中實作。在 python 中撰寫代碼可能會導致一個非常慢的函式。
(我需要將表格放在代碼欄位中,因為 stackoverflow 不允許我將其作為表格發布)
uj5u.com熱心網友回復:
您可以str.join結合使用str.get_dummies:
out = df[['ID']].join(df['CATEGORIES'].str.join('|').str.get_dummies())
輸出:
ID A B C
0 0 1 0 0
1 1 1 0 1
2 2 0 1 1
使用的輸入:
df = pd.DataFrame({'ID': [0, 1, 2],
'CATEGORIES': [['A'], ['A', 'C'], ['B', 'C']]})
還有許多其他選擇,使用pivot、crosstab等。
一個例子:
df2 = df.explode('CATEGORIES')
out = pd.crosstab(df2['ID'], df2['CATEGORIES']).reset_index()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/533404.html
