[英]Split values in a column and create a matrix of column names
我想以最小的努力來解決我的問題。
題:
我有帶有定界值的值列表。 我想在適當的單元格拆分並排列每個值。 列標題也應填充。
A,B,C
C,D,A,E
D,E
+-------+-------+-------+-------+-------+
| VLUE1 | VLUE2 | VLUE3 | VLUE4 | VLUE5 |
+-------+-------+-------+-------+-------+
| A | B | C | | |
| A | | C | D | E |
| | | | D | E |
+-------+-------+-------+-------+-------+
我有一個使用python中的排序,鍵值對和迭代的解決方案,但我想知道使用Python包或熊貓有沒有捷徑?
-山姆
從系列開始-
s
0 A,B,C
1 C,D,A,E
2 D,E
dtype: object
使用get_dummies
將s
轉換為OHE矩陣-
x = s.str.get_dummies(sep=',')
x
A B C D E
0 1 1 1 0 0
1 1 0 1 1 1
2 0 0 0 1 1
使用它通過repeat
和數組乘法創建一個新的數據框-
v = x.mul(x.columns).values
c = np.arange(1, x.shape[1] + 1)
df = pd.DataFrame(v, columns=c).add_prefix('VLUE')
df
VLUE1 VLUE2 VLUE3 VLUE4 VLUE5
0 A B C
1 A C D E
2 D E
get_dummies
我所知, get_dummies
是最快的,這是我對value_counts
和masking
嘗試,即
mask = df[0].str.split(',',expand=True).apply(pd.value_counts,1).notna()
pd.DataFrame(np.where(mask,mask.columns,'')).add_prefix('VALU')
VALU0 VALU1 VALU2 VALU3 VALU4
0 A B C
1 A C D E
2 D E
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.