根据字符串匹配的 Pandas 子集行

我已经使用string_grouperPython 中的包生成了两个公司信息数据库之间的通用名称列表。生成的数据框显示来自 DB1 ( ) 和 DB2 ( )matches的公司名称高于某个字符串相似度阈值:left_sideright_side

http://img3.mukewang.com/64478a3000011ec206560124.jpg

现在,我想减少 DB1 以仅包含公司名称存在于matches['left_side']. (因为 DB1 中的信息如果没有 DB2 中关于该公司的信息的补充就没有用。所以我只想要两者中的公司)

我该怎么做呢?这些名称存在于 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+ 行)所以请在速度方面牢记这一点!



慕神8447489
浏览 78回答 1
1回答

jeck猫

发生错误是因为DB1['names']是系列,而in运算符期望左侧有单个元素。尝试使用pandas.Series.isin() 函数:rslt_df = DB1[DB1['names'].isin(matches['left_side'])]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python