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

列表理解以获取包含来自 2 个独立数据帧的匹配值的行

列表理解以获取包含来自 2 个独立数据帧的匹配值的行

蓝山帝景 2023-12-05 15:48:13
所以我试图在一个列上匹配两个非常不同的数据帧,每个数据帧都包含字符串格式的数字。我需要一个简洁、非常快速的解决方案,所以我尝试使用字符串理解并在几天前成功,然后丢失了我的工作,我试图重新创建它。df1=pd.DataFrame({'col':['hey','hi','how ya durn']})df2=pd.DataFrame({'col':['hey','hi','hello','what']})df3=df2[[x for x in df2.col for y in df1.col if x in y]]df3.head()所以我前几天用 2 个数据帧完成了这项工作,都是 20-30 列,约 100k 行,除了每列 1 列之外的不同列数据,我试图匹配它。我要么得到 ValueError:Item wrong length # instead of #.要么花费大量时间,因为我使用的系统很慢。我知道我需要使用列表理解或更快的东西,而且我知道.apply()需要太长时间。我的两个匹配列都包含字符串格式的 10-15 长度数字。几天前,当我使用类似的列表组合单行代码让它工作时,它花了几秒钟的时间才能完成,并且非常完美,现在我丢失了它并且无法重新创建它,哈哈。任何帮助是极大的赞赏。any()(附注:我可能在列表比较中使用了一个语句,并且我 95% 确定我使用了if x in y。)
查看完整描述

1 回答

?
牧羊人nacy

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


您可以使用以下命令在两列中查找字符串


df2[df2.col.isin(df1.col)]

出去:


   col

0  hey

1   hi

一个具有理解性的解决方案是


df2[df2.col.isin([x for x in df2.col for y in df1.col if x in y])]

但是对于较大的列来说这会变慢


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

添加回答

举报

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