我有一个看起来像这样的pandas数据框
| col1 | col2
-------------------------------
0 | ['a', 'b', 'c'] | a
1 | ['b', 'd', 'e'] | g
我想知道获取此数据帧的最有效方法是什么
| col1 | col2 | a | b | c | d | e
---------------------------------------------------
0 | ['a', 'b', 'c'] | a | 1 | 1 | 1 | 0 | 0
1 | ['b', 'd', 'e'] | g | 0 | 1 | 0 | 1 | 1
我尝试使用“apply”方法,但对于形状[40000,100]的数据帧似乎没有效率 (col1包含一组1k唯一值)
这是我的代码:
df = pd.DataFrame({'col1': [['a', 'b', 'c'], ['b', 'd', 'e']], 'col2': [2,5]})
s = set([item for sublist in df['col1'].values for item in sublist])
res = scipy.sparse.csr_matrix(df['col1'].apply(
lambda row: [1 if i in [item for item in row]
else 0 for i in s]).values.tolist())
然后res.toarray()给了我
array([[1, 1, 1, 0, 0], [0, 1, 0, 1, 1]], dtype=int64)
是否有人有更有效的方式来执行该操作?
事先,非常感谢!