拆分列中的值并创建列名称矩阵

时间:2017-12-24 14:12:46

标签: python pandas dataframe

我希望以最小的努力为我的问题找到解决方案。

问题:

我有一个带有分隔值的值列表。我想在适当的单元格中拆分和排列每个值。列标题也应该填充。

输入

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包或熊猫的快捷方式?

萨姆

2 个答案:

答案 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_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