我已经使用Python中的string_grouper
包来生成公司信息的两个数据库之间的通用名称列表。结果数据帧matches
显示来自DB1(left_side
)和DB2(right_side
)的公司名称,该公司名称的字符串相似性阈值高于某个值:
现在,我想减少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+行),所以请记住这一点!
答案 0 :(得分:0)
发生错误是因为DB1['names']
是系列,而in
运算符期望左边是单个元素。
尝试使用pandas.Series.isin() function:
rslt_df = DB1[DB1['names'].isin(matches['left_side'])]