Group by 模糊字符串与 fuzzywuzzy 和 groupby 匹配

2023-12-08

我有一个随机单词和名称的数据集,我正在尝试对所有相似的单词和名称进行分组。因此给出下面的数据框:

     Name           ID            Value
0    James           1             10
1    James 2         2             142
2    Bike            3             1
3    Bicycle         4             1197
4    James Marsh     5             12
5    Ants            6             54
6    Job             7             6
7    Michael         8             80007  
8    Arm             9             47 
9    Mike K          10            9
10   Michael k       11            1

我的伪代码类似于:

import pandas as pd
from fuzzywuzzy import fuzz

minratio = 95
for idx1, name1 in df['Name'].iteritems():
   for idx2, name2 in df['Name'].iteritems():
      ratio = fuzz.WRatio(name1, name2)
      if ratio > minratio:
          grouped = df.groupby(['Name', 'ID'])['Value']\
                        .agg(Total_Value='sum', Group_Size='count')

然后这会给我想要的输出:

print(grouped)
     Name           ID            Total_Value          Group_Size
0    James           1             164                     3 # All James' grouped
2    Bike            3             1198                    2 # Bike's and Bicycles grouped
5    Ants            6             54                      1 
6    Job             7             6                       1
7    Michael         8             80017                   3 # Mike's and Michael's grouped
8    Arm             9             47                      1

显然这是行不通的,老实说,我不确定这是否可能,但这就是我正在努力实现的目标。任何能让我走上正轨的建议都会很有用。


Using 亲和力传播聚类(并不完美,但也许是一个起点):

import pandas as pd
import numpy as np
import io
from fuzzywuzzy import fuzz
from scipy import spatial
import sklearn.cluster

s="""Name           ID            Value
0    James           1             10
1    James 2         2             142
2    Bike            3             1
3    Bicycle         4             1197
4    James Marsh     5             12
5    Ants            6             54
6    Job             7             6
7    Michael         8             80007  
8    Arm             9             47 
9    Mike K          10            9
10   Michael k       11            1"""
df = pd.read_csv(io.StringIO(s),sep='\s\s+',engine='python')

names = df.Name.values
sim = spatial.distance.pdist(names.reshape((-1,1)), lambda x,y: fuzz.WRatio(x,y))
affprop = sklearn.cluster.AffinityPropagation(affinity="precomputed", random_state=None)
affprop.fit(spatial.distance.squareform(sim))

res = df.groupby(affprop.labels_).agg(
        Names=('Name',','.join),
        First_ID=('ID','first'),
        Total_Value=('Value','sum'),
        Group_Size=('Value','count')
        )

Result

                                Names  First_ID  Total_Value  Group_Size
0  James,James 2,James Marsh,Ants,Arm         1          265           5
1                        Bike,Bicycle         3         1198           2
2                                 Job         7            6           1
3            Michael,Mike K,Michael k         8        80017           3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Group by 模糊字符串与 fuzzywuzzy 和 groupby 匹配 的相关文章

  • 编辑 scikit-learn 决策树

    我想编辑 sklearn DecisionTree 例如改变条件或切割节点 叶子等 但似乎没有功能可以做到这一点 如果我可以导出到文件 编辑它以导入 如何编辑决策树 环境 Windows 10 python3 3 sklearn 0 17
  • 底图上的子图

    我有一张英国地图和 121 个地点 每个地点有 3 个值 我想绘制 121 个位置中每个位置的三个值的小条形图 目前 这些值绘制为markersize属性 看起来像这样 密集恐惧症情节 https i stack imgur com 5fv
  • 将 API 数据存储到 DataFrame 中

    我正在运行 Python 脚本来从 Interactive Brokers API 收集金融市场数据 连接到API后 终端打印出请求的历史数据 如何将数据保存到数据帧中而不是在终端中流式传输 from ibapi wrapper impor
  • conda 无法从 yml 创建环境

    我尝试运行下面的代码来从 YAML 文件创建虚拟 Python 环境 我在 Ubuntu 服务器上的命令行中运行代码 虚拟环境名为 py36 当我运行下面的代码时 我收到下面的消息 环境也没有被创建 这个问题是因为我有几个必须使用 pip
  • 使用 Scipy imsave 将 Numpy 数组保存到图像时保留未更改的数据

    使用 Scipy 保存二维 Numpy 数组 单个值 时toimage or imsave像素值与 Numpy 数组中的像素值不完全匹配 相反 在某些区域 主要是边缘 图像算法似乎使用某种插值 是否有一个选项可以停止插值并保留准确的数据 例
  • 用Python中的嵌套for循环替换重复的if语句?

    在我编写的下面的代码中 n 4 所以有五个 if 语句 所以如果我想将 n 增加到 比如说 10 那么就会有很多 if 语句 因此我的问题是 如何用更优雅的东西替换所有 if 语句 n p 4 5 number of trials prob
  • 如何使用 Python 多处理避免在分叉进程中加载​​父模块

    当您创建一个Pool使用Python的进程multiprocessing 这些进程将分叉 父进程中的全局变量将显示在子进程中 如下面的问题所述 如何限制多处理进程的范围 https stackoverflow com questions 2
  • 如何对这个 Flask 应用程序进行单元测试?

    我有一个 Flask 应用程序 它使用 Flask Restless 来提供 API 我刚刚写了一些身份验证来检查 如果消费者主机被识别 该请求包含一个哈希值 通过加密 POST 的请求内容和 GET 的 URL 以及秘密 API 密钥来计
  • RuntimeError: 预期所有张量都在同一设备上,但发​​现至少有两个设备,cpu 和 cuda:0!使用我的模型进行预测时

    我使用变压器训练了一个序列分类模型 BertForSequenceClassification 我收到错误 预计所有张量都在同一设备上 但发 现至少有两个设备 cpu 和 cuda 0 在方法wrapper index select中检查参
  • 在 matplotlib 中使用 yscale('log') 时缺少误差线

    在某些情况下 当使用对数刻度时 matplotlib 会错误地显示带有误差条的图 假设这些数据 例如在 pylab 内 s 19 0 20 0 21 0 22 0 24 0 v 36 5 66 814250000000001 130 177
  • Python正则表达式从字符串中获取浮点数

    我正在使用正则表达式来解析字符串中的浮点数 re findall a zA Z d d t 是我使用的代码 这段代码有问题 如果数字和任何字符之间没有空格 则不会解析该数字 例如 0 1 2 3 4 5 6 7 8 9 的预期输出为 0 1
  • 一起使用 Flask 和 Tornado?

    我是以下的忠实粉丝Flask 部分是因为它很简单 部分是因为它有很多扩展 http flask pocoo org extensions 然而 Flask 是为了在 WSGI 环境中使用而设计的 而 WSGI 不是非阻塞的 所以 我相信 它
  • 如何检查列表是否为空?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 例如 如果通过以下内容 a 我如何检查是否a是空的 if not a print Lis
  • 求解不等式系统时“多项式错误:仅允许使用单变量多项式”

    我想找到以下两个常数的区间cons1 and cons2我写了下面的代码 from sympy import Poly from sympy import Abs from sympy solvers inequalities import
  • 为什么“return self”返回 None ? [复制]

    这个问题在这里已经有答案了 我正在尝试获取链的顶部节点getTopParent 当我打印出来时self name 它确实打印出了父实例的名称 然而 当我回来时self 它返回 None 为什么是这样 class A def init sel
  • 如何向 SCons 构建添加预处理和后处理操作?

    我正在尝试在使用 SCons 构建项目时添加预处理和后处理操作 SConstruct 和 SConscript 文件位于项目的顶部 预处理动作 生成代码 通过调用不同的工具 gt 不知道在此预处理之后将生成的确切文件 可以创建用于决定生成哪
  • Jupyter Notebook:没有名为 pandas 的模块

    我搜索了其他问题 但没有找到任何有帮助的内容 大多数只是建议您使用 conda 或 pip 安装 pandas 在我的 jupyter 笔记本中 我试图导入 pandas import pandas as pd 但我收到以下错误 Modul
  • 从数据集的给定日期范围中提取属于一天的数据

    我有一个数据集 日期范围为 2018 年 1 月 12 日到 8 月 3 日 其中包含一些值 维数为my df数据框是 my df shape 9752 2 每行包含半小时频率 第一行开始于2018 01 12 my df iloc 0 D
  • 为什么用字符串和时间增量转置 DataFrame 会转换数据类型?

    这种行为对我来说似乎很奇怪 id列 字符串 在转置后转换为时间戳df如果另一列是时间增量 import pandas as pd df pd DataFrame id 00115 01222 32333 val 12 14 170 df v
  • 从 pandas 数据框中绘制堆积条形图

    我有数据框 payout df head 10 复制以下 Excel 绘图的最简单 最智能和最快的方法是什么 我尝试过不同的方法 但无法让一切都到位 Thanks 如果您只想要一个堆积条形图 那么一种方法是使用循环来绘制数据框中的每一列 并

随机推荐

  • 为什么 sizeof...(T) 这么慢?实现不带 sizeof...(T) 的 C++14 make_index_sequence

    我找到了 C 14 make index sequence 算法 的实现 template lt int gt struct index sequence using type index sequence template lt type
  • 如何将字典列表拆分为多个保持相同索引的列?

    我有一个数据框 它有一个时间戳作为索引 还有一个包含字典列表的列 index var A 2019 08 21 09 05 49 Date1 Aug 21 2017 9 09 51 AM Date2 Aug 21 2017 9 09 54
  • 如何在 umbraco 6 的管理面板中创建自定义部分?

    我希望在 umbraco 6 的管理面板中开发一个自定义用户部分 此部分可以管理用户详细信息以及管理员批准 有人知道如何实现这一点吗 显然它类似于在 Umbraco 4 中这样做 但在 Umbraco 6 中 不是对umbracoApp表
  • 对于画布,.drawImage 函数抛出“TypeError:预期图像或画布”

    我正在尝试在我的不和谐机器人中添加排名卡 为了做到这一点 我正在尝试使用画布 但是当我使用画布时 一切正常 直到我点击 drawImage方法 它给我一个错误 提示 TypeError 需要图像或画布 虽然我已经要求了canvas在全球范围
  • Python if any() 不起作用

    我想检查列表中是否有任何字符串元素phrases包含一组中的某些关键字phd words 我想用any但它不起作用 In 19 import pandas as pd import psycopg2 as pg def test phd w
  • 由 pywin32 生成的 python 可执行文件中的 dll 加载错误

    我使用 py2exe 使用 64 位 python 解释器和 32 位 python 解释器创建了 python 可执行文件 在我的程序中 我使用该模块pywin32 com 因此我在创建可执行文件之前下载并安装了该程序的 64 位和 32
  • Android sqlite,限制数据库中的行数[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我一直有新数据进入应用程序 因此我想将表中的行数限制为 100 条记录 我将其描述为 FIFO 队列 每当有新数据 一次只有几行 进来时 表 底部 的旧数据就会被刷新并删除 由于它是
  • 用汇编语言定义“变量”

    我知道这是一个非常愚蠢的问题 但我有一段时间无法找到答案如何在 GAS AT T 汇编语言中正确声明和定义 变量 例如 我想要 5 个字节的缓冲区 两个 1 字节变量 最初值为 0 2 字节变量为 0 和 2 字节变量为 10 这段代码不能
  • 通过Java访问谷歌照片API

    我对 google API 很陌生 并且遇到了麻烦 我红色文档适用于 Java 的 Google 照片 API 然后我在 google API 控制台中创建了 OAuth 凭据并下载了它 credentials json 文件 之后我尝试访
  • 链接 .so 文件中的旧符号版本

    在 x86 64 linux 上使用 gcc 和 ld 我需要链接到较新版本的库 glibc 2 14 但可执行文件需要在旧版本 2 5 的系统上运行 由于唯一不兼容的符号是 memcpy 需要 memcpy GLIBC 2 2 5 但提供
  • Meteor 的 标签建议

    各位流星用户 在搜索教程和示例应用程序时 我发现了一个使用独特头部结构的教程和示例应用程序 这个特定的示例应用程序甚至没有标记任何地方 只是一个名为head html其中包含上述代码 我还了解到
  • C#同时更新两个文本框?

    假设我有两个文本框 一个包含二进制数据 另一个包含 ASCII 等效数据 如果用户更改其中任何一个 我如何同时更新另一个文本框 而无需按按钮 你必须防止无限循环 asciiTextBox变化binaryTextBox Text这改变了asc
  • 获取或插入 PostgreSQL

    我有一个对象表 其中包含多个属性的列和一个具有唯一 SERIAL 标识符的列 例如 CREATE TABLE person id SERIAL NOT NULL name VARCHAR 16 NOT NULL age INT NOT NU
  • 如何防止Android中移动网站的深度链接?

    我已经为我的所有活动添加了这样的深层链接
  • Android 字符串比较不起作用

    我很难使用 Java 比较 Android 中的两个字符串 我所做的是运行 HTTP get 请求 该请求返回 yes 或 no 并根据该请求决定是否启动新活动 我正在 Async onPostExecute 方法中执行字符串比较 尽管 H
  • 如何检查iframe是否加载失败? jquery?

    我现在有这个 jquery 代码并且工作正常 当用户单击提交按钮时 它会隐藏表单 显示加载器 然后将数据提交到链接并在 iframe 中加载输出 document ready function xxx form validate submi
  • 如何在html代码中使用json文件

    我有 json 文件mydata json 这个文件中是一些 json 编码的数据 我想在文件中获取这些数据index html并在 JavaScript 中处理这些数据 但不知道如何在 html 文件中连接 json 文件 请告诉我 这是
  • Android 自定义按钮状态选择器 XML 文件导致 Resource$NotFoundException

    由于 Resource NotFoundException 我的活动随机崩溃 并且总是由于我的自定义按钮的状态选择器文件之一而导致 而且崩溃是完全随机的 我将多次检查整个应用程序而不会发生崩溃 然后第 n 次转到 Activity 然后它会
  • 使用 jQuery 自定义下拉面板

    我正在尝试为以下问题找到 jQuery 解决方案 通用下拉控件 折叠时看起来像一个普通的选择框 下拉一个自定义面板 您可以在其中放置任何内容 I m not寻找菜单控件 或者可设置样式的选择或列表控件 我需要一个下拉面板可以容纳任何内容的控
  • Group by 模糊字符串与 fuzzywuzzy 和 groupby 匹配

    我有一个随机单词和名称的数据集 我正在尝试对所有相似的单词和名称进行分组 因此给出下面的数据框 Name ID Value 0 James 1 10 1 James 2 2 142 2 Bike 3 1 3 Bicycle 4 1197 4