给定一个矩阵
----d1 d2 d3
一:v1 0 v2
b: v1 v3 0
我要
----v1 v2 v3
一个:1 1 0
b: 1 0 1
我依稀记得这可以用 Gensim
来完成...但是 pandas 中也必须有一些模块吗?我已经尝试做 for v in v: for el in [a,b]
(很高兴发布代码,但我认为这个例子已经足够清楚了)但是它很慢,而且我想象一下,这一定已经解决了。
最佳答案
你可以使用 pandas.get_dummies
,例如
import pandas as pd
# create your dataframe
df = pd.DataFrame(index=['a', 'b'],
data={'d1': ['v1', 'v1'],
'd2': [None, 'v3'],
'd3': ['v2', None]})
# perform one-hot encoding
df = pd.get_dummies(df, prefix_sep='=')
# rename if you so wish
df.rename(columns={c: c.split('=')[1] for c in df.columns}, inplace=True)
# sort columns by name (not really necessary)
df.sort_index(axis=1, inplace=True)
# have a look
print df
产生
v1 v2 v3
a 1 1 0
b 1 0 1
关于python - 如何将一组特征转换为 Pandas 中的计数矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006270/