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

基于列之间的部分字符串匹配连接数据框

基于列之间的部分字符串匹配连接数据框

哔哔one 2021-06-11 13:37:52
我有一个数据框,我想比较它们是否存在于另一个 df 中。after_h.sample(10, random_state=1)             movie           year   ratings108 Mechanic: Resurrection   2016     4.0206 Warcraft                 2016     4.0106 Max Steel                2016     3.5107 Me Before You            2016     4.5我想比较上述电影是否存在于另一个 df 中。              FILM                   Votes0   Avengers: Age of Ultron (2015)   41701   Cinderella (2015)                 9502   Ant-Man (2015)                   3000 3   Do You Believe? (2015)            3504   Max Steel (2016)                  560 我想要这样的东西作为我的最终输出:    FILM              votes0  Max Steel           560
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

给定输入数据帧df1和df2,您可以通过 使用布尔索引pd.Series.isin。要对齐电影字符串的格式,您需要首先连接电影和年份df1:


s = df1['movie'] + ' (' + df1['year'].astype(str) + ')'


res = df2[df2['FILM'].isin(s)]


print(res)


               FILM  VOTES

4  Max Steel (2016)    560



查看完整回答
反对 回复 2021-06-15
?
HUH函数

TA贡献1836条经验 获得超4个赞

smci的选项 1 几乎就在那里,以下对我有用

df1['Votes'] = ''
df1['Votes']=df1['movie'].apply(lambda title: df2[df2['FILM'].str.startswith(title)]['Votes'].any(0))

解释:

在 df1 中创建一个 Votes 列

将 lambda 应用于 df1 中的每个电影字符串

lambda 查找 df2,选择 df2 中 Film 以电影标题开头的所有行

选择 df2 结果子集的 Votes 列

使用 any(0) 取此列中的第一个值


查看完整回答
反对 回复 2021-06-15
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号