Pandas中的数据过滤代码需要大量时间才能运行

时间:2018-01-15 06:14:57

标签: python-3.x pandas

我在Python中执行以下代码。它花了一些时间运行。有什么我做错了。

有没有更好的方法来做同样的事情。

REF_ID

1 个答案:

答案 0 :(得分:0)

由于没有提供足够的数据(我不知道model是什么),因此无法确定以下行中发生了什么:

similar = [[item[0] for item in model.wv.most_similar(word) if item[1] > 0.7] for word in words]

在您创建仅包含两列的DataFrame similarity_matrix时,似乎没有必要使用下面的第二行:

similarity_matrix = pd.DataFrame({'Root_Word': words, 'Similar_Words': similar})
# This below does not do anything
similarity_matrix = similarity_matrix[['Root_Word', 'Similar_Words']]  

apply方法不是很快。尝试使用已在pandas中实现的矢量化方法,如下所示。 Here是关于此主题的有用链接。

similarity_matrix['Unlist_Root'] = similarity_matrix['Root_Word'].apply(lambda x: ', '.join(x))
# will be faster like this:
similarity_matrix['Unlist_Root'] = similarity_matrix['Root_Word'].str.join(', ')

类似地:

similarity_matrix['Unlist_Similar'] = similarity_matrix['Similar_Words'].apply(lambda x: ', '.join(x))
# will be faster like this:
similarity_matrix['Unlist_Similar'] = similarity_matrix['Similar_Words'].str.join(', ')

其余代码无法运行得更快。

如果您提供了更多数据/信息,我们可以为您提供更多帮助......