根据字符串匹配的熊猫子集行

时间:2020-08-04 20:44:11

标签: python pandas

我已经使用Python中的string_grouper包来生成公司信息的两个数据库之间的通用名称列表。结果数据帧matches显示来自DB1(left_side)和DB2(right_side)的公司名称,该公司名称的字符串相似性阈值高于某个值:

enter image description here

现在,我想减少DB1以仅包括matches['left_side']中公司名称所在的行。 (因为如果没有DB2中有关该公司的信息的补充,DB1中的信息将无用。所以我只希望两者中的公司都具有这种功能)

我该怎么做?名称出现在DB1的“名称”列中,例如

rslt_df = DB1[DB1['names'] in matches['left_side']]

给我一​​个错误('Series' objects are mutable, thus they cannot be hashed)。

DB1非常大(matches大约有10,000-20,000行,DB1有2000000+行),所以请记住这一点!

1 个答案:

答案 0 :(得分:0)

发生错误是因为DB1['names']是系列,而in运算符期望左边是单个元素。

尝试使用pandas.Series.isin() function

rslt_df = DB1[DB1['names'].isin(matches['left_side'])]