首页 > 解决方案 > 在 2 个 pandas 数据帧中计数匹配

问题描述

我有 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.Text[0] 中的 df_lm.Words[0] 中有多少单词

注意:df 有 ca 500 行,df_lm 有 6 -> 所以我需要在 df 中创建 6 个新列,以便更新后的 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)

标签: pythonpython-3.xpandasdataframe

解决方案


根据我的评论,你可以尝试这样的事情:

下面的代码必须在循环中运行,其中来自第一个 df 的文本列必须与来自下一个的所有 6 个匹配,并使列的值来自len(c)

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

如果这对您有帮助,请告诉我,否则将更新/删除答案


推荐阅读