为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕神8447489 2023-04-25 16:06:56
我已经使用string_grouperPython 中的包生成了两个公司信息数据库之间的通用名称列表。生成的数据框显示来自 DB1 ( ) 和 DB2 ( )matches的公司名称高于某个字符串相似度阈值:left_sideright_side现在,我想减少 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+ 行)所以请在速度方面牢记这一点!
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

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

尝试使用pandas.Series.isin() 函数:

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


查看完整回答
反对 回复 2023-04-25
  • 1 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信