我想將用逗號分隔的字串或串列轉換為如下所示的列
column1 | column2 | column3 |
A | X | [1, 2, 3] |
B | Y | [1, 4, 5, 8] |
C | Z | [5, 1] |
D | T | [4, 3] |
或者
column1 | column2 | column3 |
A | X | 1,2,3 |
B | Y | 1,4,5,8 |
C | Z | 5,1 |
D | T | 4,3 |
至
column1 | column2 | 1 | 2 | 3 | 4 | 5 | 8 |
A | X | 1 | 1 | 1 | 0 | 0 | 0 |
B | Y | 1 | 0 | 0 | 1 | 1 | 1 |
C | Z | 1 | 0 | 0 | 0 | 1 | 0 |
D | T | 0 | 0 | 1 | 1 | 0 | 0 |
提前致謝
uj5u.com熱心網友回復:
在第二種情況下,您可以Series.str.get_dummies輕松地使用 one-hot 對column3列進行編碼。然后使用Dataframe.join將生成的 one-hot 編碼列連接到原始 DataFrame。
import pandas as pd
df = pd.DataFrame({
'column1': ['A', 'B', 'C', 'D'],
'column2': ['X', 'Y', 'Z', 'T'],
'column3': ['1,2,3', '1,4,5,8', '5,1', '4,3']
})
res = (
df.drop(columns='column3')
.join(df['column3'].str.get_dummies(sep=','))
)
輸出:
>>> res
column1 column2 1 2 3 4 5 8
0 A X 1 1 1 0 0 0
1 B Y 1 0 0 1 1 1
2 C Z 1 0 0 0 1 0
3 D T 0 0 1 1 0 0
在第一種情況下,假設column3包含整數串列,您可以執行與上述相同的操作,但首先將值轉換column3為逗號分隔的字串。例如使用Series.apply
df['column3'] = df['column3'].apply(lambda lst_nums: ','.join(map(str, lst_nums)))
如果 的值column3是您可以使用的字串Series.str.join串列
df['column3'] = df['column3'].str.join(',')
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/486569.html
上一篇:csv檔案中的資料什么也沒有
