Как посчитать сходство строк с помощью pandas dataframe быстрее - PullRequest
0 голосов
/ 25 мая 2018

У меня есть две панды dataframes, я хочу посчитать сходство строк с dataframes.Это мой код, но я столкнулся с большой проблемой: мои ставки слишком высоки, а мой код стоит слишком много времени (возможно, стоит 7 дней).Есть ли способ ускорить мой код?

import pandas as pd
import re
import difflib

df_post=pd.read_csv('ptt_run.csv',encoding='utf8',header=0)
df_post=df_post.fillna('null')
df_yahoo=pd.read_csv('yahoo_movie_20180519_test.csv',encoding='utf8',header=0)
df_yahoo=df_yahoo.fillna('null')

for i in range(0,len(df_yahoo)):
    df_post[df_yahoo['yahoo_movie_id'][i]]=0

    for j in range(0,len(df_post)):
        df_post.loc[j, df_yahoo['yahoo_movie_id'][i]]=difflib.SequenceMatcher(None, df_yahoo['yahoo_ch_nosign'][i], df_post['title_nosign'][j]).ratio()

df_post.to_csv('df_score_test.csv', encoding='utf8',index=False)

my len(df_yahoo)=6000, len(df_post)=130000
Я хочу знать df_yahoo ['yahoo_ch_nosign'] [0] с помощью df_post ['title_nosign'][0 ~ 13000] сходство с df_yahoo ['yahoo_ch_nosign'] [6000] с df_post ['title_nosign'] [0 ~ 13000] сходство
Это слишком дорого, чтобы сделать это для цикла, но я не знаю, какчтобы улучшить мою проблему.

1 Ответ

0 голосов
/ 25 мая 2018

По сути, ручное зацикливание, как в вашем случае, является самым медленным методом, который не использует преимущества встроенных методов панд / numpy.

Эта статья хорошо проясняет ситуацию: https://engineering.upside.com/a-beginners-guide-to-optimizing-pandas-code-for-speed-c09ef2c6a4d6

...