Python 3.x 是否将字向量添加为数据框中的列?

Python 3.x 是否将字向量添加为数据框中的列?,python-3.x,pandas,gensim,word2vec,Python 3.x,Pandas,Gensim,Word2vec,我有一个带有列关键字的数据框: keywords election countries majestic dollar .... .... ... 我也有自己的使用gensim的预训练word2vec模型,在那里我可以使用model['anyword']为每个单词获得20维向量。我的问题是 i) 我想将这20个维度向量指定为与每个关键字对应的列名称(V1到V20) ii)如果单词词汇表中不存在单词,则我希望将向量指定为与该单词对应的[0,0,0,,,,,,0]数组,否则将给出错误:单词词汇表中

我有一个带有列
关键字的数据框

keywords
election
countries
majestic
dollar
....
....
...
我也有自己的使用gensim的预训练word2vec模型,在那里我可以使用
model['anyword']
为每个单词获得20维向量。我的问题是

i) 我想将这20个维度向量指定为与每个关键字对应的列名称(V1到V20)

ii)如果单词词汇表中不存在单词,则我希望将向量指定为与该单词对应的[0,0,0,,,,,,0]数组,否则将给出
错误:单词词汇表中不存在
。例如,如果单词
majestic
在vocab中不存在,那么
df
应该

keyword     V1     V2      V3 ............. V20
election   0.02    0.44    0.32.............0.12
countries  0.33    0.33    0.11............ 0.13
majestic   0       0       0   ............ 0
dollar     0.31    0.77    0.86............ 0.91
.......
.......
就我目前所做的而言:-

for i in df['keywords']:
    vectors=model['i']

我得到了向量数组,但我不知道如何在
df
中将它与列名称放在一起,如
V1 V2 V3 V4….V20
,以及如何将缺少的单词视为
'0'

您可以像下面给定的代码那样执行此操作。 首先将函数设置为这样。对于我使用过的单词not in词汇表,请尝试,除非这样,如果单词不在词汇表中,它会将0的列表放在那里

missing=[0]*20
def fun(key):
    try:
        return(model[key])
    except:
        return(missing)
然后调用此函数:

df['vector'] = df['keywords'].apply(fun)
df = pd.DataFrame(df['vector'].values.tolist())

我希望这会对你有所帮助。

@James你还面临任何问题吗?是否有其他方式,如列名称增加,即可能是500,我已编辑了答案。看一看。如果你面临任何进一步的问题,请评论它。这是一种正确的方法吗,比如说,从手套或word2vec中获取嵌入,并使用它们来训练深度学习模型?这是表示数据帧中嵌入内容的正确方法吗?