我希望以最小的努力为我的问题找到解决方案。
问题:
我有一个带有分隔值的值列表。我想在适当的单元格中拆分和排列每个值。列标题也应该填充。
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包或熊猫的快捷方式?
萨姆
答案 0 :(得分:2)
从系列开始 -
xdebug.remote_log=/home/vagrant/code/xdebug.log
使用s
0 A,B,C
1 C,D,A,E
2 D,E
dtype: object
-
s
转换为OHE矩阵
get_dummies
使用此选项可使用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
答案 1 :(得分:2)
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