将 pandas 列的元素与另一个 pandas 数据框的列进行匹配

2023-12-05

我有一个熊猫数据框A带柱keywords as :-

 keywords
 ['loans','mercedez','bugatti','a4']
 ['trump','usa','election','president']
 ['galaxy','7s','canon','macbook']
 ['beiber','spiderman','marvels','ironmen']
 .........................................
 .........................................
 .........................................

我还有另一个 pandas 数据框B带柱category and words这是逗号分隔的字符串:-

category              words
audi                  audi a4,audi a6
bugatti               bugatti veyron, bugatti chiron
mercedez              mercedez s-class, mercedez e-class
dslr                  canon, nikon
apple                 iphone 7s,iphone 6s,iphone 5
finance               sales,loans,sales price
politics              donald trump, election, votes
entertainment         spiderman,captain america, ironmen
music                 justin beiber, rihana,drake
........              ..............
.........             .........

我想要的都是地图dataframe A column keywords with dataframe B column words并分配相应的category。映射keywords列应该与列字符串中的每个单词一起word。例如:- 关键字a4应该与字符串中的两个单词匹配audi a4在列中words.预期结果是:-

  keywords                                       matched_category
  ['loans','mercedez','bugatti','a4']            ['finance','mercedez','mercedez','bugatti','bugatti','audi']                                    
  ['trump','usa','election','president']         ['politics','politics']                                           
  ['galaxy','7s','canon','macbook']              ['apple','dslr']
  ['beiber','spiderman','marvels','ironmen']     ['music','entertaiment','entertainment','entertainment']

一种方法是使用 pandas.transform:

import pandas as pd

A = pd.DataFrame({'keywords': [['loans','mercedez','bugatti','a4'],
                           ['trump','usa','election','president']]})
B = pd.DataFrame({'category': ['audi', 'finance'],
                  'words': ['audi a4,audi a6', 'sales,loans,sales price']})

def match_category_to_keywords(kws):
    ret = []
    for kw in kws:
        m = B['words'].transform(lambda words: any([kw in w for w in words.split(',')]))
        ret.extend(B['category'].loc[m].tolist())
    return pd.np.unique(ret)

A['matched_category'] = A['keywords'].transform(lambda kws: match_category_to_keywords(kws))
print(A)

Output:

                            keywords matched_category
0     [loans, mercedez, bugatti, a4]  [audi, finance]
1  [trump, usa, election, president]               []
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 pandas 列的元素与另一个 pandas 数据框的列进行匹配 的相关文章

  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • 错误:permission_manager_qt.cpp(82) 不支持的权限类型:13

    我正在开发具有内置浏览器功能的 python 代码 PyQt 5 13 import sys from PyQt5 QtCore import from PyQt5 QtGui import from PyQt5 QtWidgets imp
  • Python igraph:从图中删除顶点

    我正在使用安然电子邮件数据集 并尝试删除没有 enron com 的电子邮件地址 即我只想拥有安然电子邮件 当我尝试删除那些没有 enron com 的地址时 一些电子邮件由于某些原因被跳过 下面显示了一个小图 其中顶点是电子邮件地址 这是
  • “char”/“character”类型的类型提示

    char 或 character 没有内置的原始类型 因此显然必须使用长度为 1 的字符串 但是为了暗示这一点并暗示它应该被视为一个字符 如何通过类型提示来实现这一点 grade chr A 一种方法可能是使用内置的 chr 函数来表示这一
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • 如何在python中检索aws批处理参数值?

    流程 Dynamo DB gt Lambda gt 批处理 如果将角色 arn 插入动态数据库 它是从 lambda 事件中检索的 然后使用submit job角色 arn 的 API 被传递为 parameters role arn ar
  • 为什么 python 对于共享锁抛出“multiprocessing.managers.RemoteError”?

    我正在使用 python 3 6 7 和 Ubuntu 18 04 运行以下脚本后 每个进程都有自己的共享锁 from multiprocessing import Process Manager def foo l1 with l1 pr
  • 具有多个元素的数组的真值是二义性错误吗? Python

    from numpy import from pylab import from math import def TentMap a x if x gt 0 and x lt 0 5 return 2 a x elif x gt 0 5 a
  • 如何使用Python的super()来更新父值?

    我对继承很陌生 之前所有关于继承和 Python 的 super 函数的讨论都有点超出我的理解 我当前使用以下代码来更新父对象的值 usr bin env python test py class Master object mydata
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 将输入发送到 python 子进程而不等待结果

    我正在尝试为一段代码编写一些基本测试 该代码通常通过 stdin 无休止地接受输入 直到给出特定的退出命令 我想检查程序是否在给出一些输入字符串时崩溃 经过一段时间来考虑处理 但似乎无法弄清楚如何发送数据而不是陷入等待我不知道的输出关心 我
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • 如何通过字符串匹配加速 pandas 行过滤?

    我经常需要过滤 pandas 数据框df by df df col name string value 并且我想加快行选择操作 有没有快速的方法可以做到这一点 例如 In 1 df mul df 3000 2000 3 reset inde
  • Python 3.2 中 **kwargs 和 dict 有什么区别?

    看起来Python的很多方面都只是功能的重复 除了我在 Python 中的 kwargs 和 dict 中看到的冗余之外 还有什么区别吗 参数解包存在差异 许多人使用kwargs 并通过dict作为论据之一 使用参数解包 Prepare f
  • 将一维数组转换为二维数组[重复]

    这个问题在这里已经有答案了 我正在开发一个程序 我必须将文本文件中的值读入一维数组 我已经成功获取该一维数组中的数字 m1 1 2 3 4 5 6 7 8 9 但我希望数组是 m1 1 2 3 4 5 6 7 8 9 您可以使用此代码 co
  • 如何将列表字典写入字符串而不是 CSV 文件?

    This 堆栈溢出问题 https stackoverflow com questions 37997085 how to write a dictionary of lists to a csv file将列表字典写入 CSV 文件的答案

随机推荐

  • 如何从 Windows 启动 Mongo DB?

    我已经在 Windows 7 64 位 机器上安装了 MongoDB 我也创建了路径 data db 但当我尝试使用命令启动 mongodb 时 C mongodb bin mongod exe 它没有启动 它正在显示admin web c
  • Javascript从具有多个属性的文件输入元素获取文件数量及其文件名?

    我有一个文件输入multiple multiple 属性允许用户一次选择多个文件 我想在上传之前显示选定的文件名及其计数 但是我不确定如何使用 javascript 从文件输入元素获取此信息
  • 用于转换为任何本地时间的 C++ 库(由 linux zoneinfo 字符串定义)

    我正在寻找一个 C 库来将 UTC 时间转换为任何本地时间 反之亦然 不仅是计算机的时区 而且是任何给定的时区 时区由 unix zoneinfo 字符串 例如 Europe Paris Olson 字符串定义 该库应该在 Windows
  • 将 OPENQUERY 与 Oracle 数据库结合使用来查询日期范围

    我们有一个 Oracle 数据库 可以通过 OpenQuery 访问该数据库以获取某些内容 显然 您无法使用 OleDB 驱动程序直接在 OpenQuery 中进行日期比较 因此要解决此问题 您必须将日期转换为 Julien 日期并比较这些
  • NSOperation 内的调度组 - 尽管 maxConcurrentOperationCount = 1,仍然允许多个操作

    我的目标是在 NSOperation 子类中使用调度组来管理异步任务的串行下载队列 我将 maxConcurrentOperationCount 设置为 1 我已经定义了我的队列 var GlobalDownloadQueue Dispat
  • 为什么我从 mov ax, bx+si+1 得到的结果为零?

    mov ax 10 mov bx 4 mov si ax mov ax bx si 1 LEA ax bx si 1 当我将 bx si 和 1 加在一起并移至 ax 时 结果为 0 在下一行 当我使用 LEA 时 它起作用了 我得到了 1
  • 根据登录用户django显示不同的内容

    所以我上周末刚刚学习了Python Django 我想做的是根据登录者的不同提供具有不同内容的 url 路由 所以我的用例是我创建 5 个用户名 密码 然后这 5 个用户可以登录以阅读适合他们的特定内容 路由 而没有其他用户可以使用用户应该
  • 使用 PhotoKit (PHAsset) 导出视频每次都会给出不同的视频文件

    我使用该方法 本问题的结尾 从设备检索视频 它的作用是找到库中的第一个视频 创建导出会话并将视频导出为 MOV 文件 应用程序运行两次后 在方法运行之间停止应用程序 将比较两个结果文件 两个文件是不同的 我期望这两个文件是相同的 因为导出的
  • Eclipse启动时加载SDK时出错

    我已经阅读了上述问题的不同答案 但我有一个具体的问题 当我启动 Eclipse 时 出现错误 gt Error Parsing gt C android sdk r24 2 windows android sdk windows syste
  • 为什么 PIL 在我的代码中无法合并 2 个图像?

    我正在尝试使用 Image paste 函数将 2 张图像合并为一张更大的图像 我首先创建一个可以容纳两个图像的图像 然后粘贴这两个图像 wrapper Image new I width height textHeight if plac
  • 执行与 theano 的 conv2d 中完全相同的卷积

    我有一个现有的分类模型 是在 theano tensor nnet 下使用 theano 的 conv2d 进行训练的 现在我必须使用这个模型在 Java 中进行某种预测 我按照一些文档在Python中实现了一个简单的卷积 最后 我将用Ja
  • plt.setp 替代子图或如何设置子图 x 轴上的文本旋转

    我有这段代码 可以在其中控制属性 例如 x 轴范围 标题 xlabel ylabel 图例 网格 x 标签上文本的旋转 usr bin python import datetime import numpy as np import mat
  • 在C#中为新用户创建环境变量

    我们正在尝试在 Wix 中为产品构建一个安装程序 该产品的一部分需要将elasticsearch安装为服务 并使其作为服务运行 该服务应在单独的用户帐户下运行 第一步 设置用户帐户已成功 但是 为了让elasticsearch能够正确运行
  • 三合会不出现战斗? (Java Set 缺少一项)

    我有来自两家公司 asoft 和 bsoft 的代码 我也无法改变 这是我的情况的简化版本 我确信有足够的信息来查找导致问题的原因 bsoft提供IGang 代表一个可以与其他帮派作战的帮派 package bsoft public int
  • 在 MatLab 中使用当前文件名保存图形

    我有一个脚本 可以从当前工作目录一次提取一个文件并绘制指定信息 我想将每个图保存为 jpeg tiff 也可以 并带有它正在绘制的文件的名称 我有大约 3000 个文件 因此我正在寻找一种自动化的方法来执行此操作 我认为如果放在 for 循
  • 如何自动运行脚本

    我创建了一个脚本 它会根据天气告诉我早上穿什么 即 如果下雨 则穿雨衣 如果冷 则穿厚夹克 等等 我有相当基本的 python 编程经验 并且该脚本运行良好 但我希望能够创建一个文件 只需从桌面双击该文件 脚本就会自动运行 我的目标是能够在
  • 如何确定 WPF 使用的是硬件渲染还是软件渲染?

    我正在各种平台上对 WPF 应用程序进行基准测试 并且需要一种简单的方法来确定 WPF 是否使用硬件或软件渲染 我似乎记得曾打电话来确定此事 但现在无法联系 另外 是否有一种简单的 基于代码的方法来强制一个渲染管道优于另一个渲染管道 检查
  • Android:在页眉和页脚之间显示列表视图

    我从android开发教程中学到了 现在我可以制作ListView了 它工作得很好 现在我的要求是我想显示带有我在 xml 文件中制作的页眉和页脚的列表视图 基本上在顶部会有一个页眉和页脚 文本视图 然后跟随在页眉和页脚之间可滚动的列表视图
  • 在Python中将非常大的文件分割成更小的文件 - 打开的文件太多

    我有一个非常大的 csv 文件 接近 1TB 我想根据每行中的信息将其拆分为更小的 csv 文件 由于无法在内存中执行此操作 因此我的预期方法是读取每一行 决定它应该进入哪个文件 然后将其附加到那里 然而 这需要很长时间 因为打开和关闭需要
  • 将 pandas 列的元素与另一个 pandas 数据框的列进行匹配

    我有一个熊猫数据框A带柱keywords as keywords loans mercedez bugatti a4 trump usa election president galaxy 7s canon macbook beiber s