簡體   English   中英

在列中拆分值並創建列名稱矩陣

[英]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_dummiess轉換為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_countsmasking嘗試,即

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.

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