Подсчет совпадений в 2-х пандах данных - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть 2 кадра данных, содержащих текст в виде списка в каждой строке.Этот называется df

Datum   File    File_type   Text    
Datum                                               
2000-01-27  2000-01-27  0864820040_000127_04.txt    _04     [business, date, jan, heineken, starts, integr..

, и у меня есть еще один, df_lm, который выглядит так:

List_type   Words
0   LM_cnstrain.    [abide, abiding, bound, bounded, commit, commi...
1   LM_litigius.    [abovementioned, abrogate, abrogated, abrogate...
2   LM_modal_me.    [can, frequently, generally, likely, often, ou...
3   LM_modal_st.    [always, best, clearly, definitely, definitive...
4   LM_modal_wk.    [almost, apparently, appeared, appearing, appe...

Я хочу создать новые столбцы в df, где совпадение слов должно бытьподсчитано, например, сколько слов из df_lm.Words [0] в df.Text [0]

. Примечание: df имеет около 500 строк, а df_lm имеет 6 ->, поэтому мне нужно создать 6 новыхстолбцы в df, чтобы обновленный df выглядел примерно так:

    Datum   ...LM_cnstrain  LM_litigius  Lm_modal_me  ...
2000-01-27  ...   5            3             4
2000-02-25 ...    7            1             0

Надеюсь, я ясно понял вопросЗаранее спасибо!

РЕДАКТИРОВАТЬ: я уже сделал что-то.аналогично, создав список и зацикливая его, но поскольку списки в df_lm очень длинные, это не вариант.

Код выглядел так:

result_list[]
for file in file_list:
    count_growth = 0
    for word in text.split ():
        if word in growth:
            count_growth = count_growth +1
    a={'Grwoth':count_growth}
    result_list.append(a)

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Итак, я пришел к следующему решению:

    for file in file_list:
        count_lm_constraint = 0
        count_lm_litigious = 0
        count_lm_modal_me = 0
          for word in text.split()
        if word in df_lm.iloc[0,1]:
                count_lm_constraint = count_lm_constraint +1 
            if word in df_lm.iloc[1,1]:
                count_lm_litigious = count_lm_litigious +1
            if word in df_lm.iloc[2,1]:
                count_lm_modal_me = count_lm_modal_me +1
            a={"File": name, "Text": text,'lm_uncertain':count_lm_uncertain,'lm_positive':count_lm_positive ....}
result_list.append(a) 
0 голосов
/ 21 ноября 2018

Согласно моим комментариям, вы можете попробовать что-то вроде этого:

Приведенный ниже код должен выполняться в цикле, где текстовый столбец с 1-го числа должен совпадать со всеми 6 из следующего и создать столбец со значением изlen(c)

desc = df_lm.iloc[0,1]
matches = df.text.isin(desc)
result = df.text[matches]

Если это поможет вам, дайте мне знать, иначе обновите / удалите ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...