所以我试图在一个列上匹配两个非常不同的数据帧,每个数据帧都包含字符串格式的数字。我需要一个简洁、非常快速的解决方案,所以我尝试使用字符串理解并在几天前成功,然后丢失了我的工作,我试图重新创建它。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])]
但是对于较大的列来说这会变慢
添加回答
举报
0/150
提交
取消