首页 > 解决方案 > 匹配 DataFrame 中的相似值

问题描述

我有以下形式的DataFrame:

Name    Count
Car     500
Cars    300
Train   100
trainz  200
Planes  1000
Plane   100 
planses 1
Ship    100
ships   10

我正在尝试将相似的值相互匹配,以便将count列中的数字相加以获得相似的值。

因此,输出数据框将是列中给定类型的第一个找到的值,并且是name列中所有相似值的总和值count

Name  Count
Car    800
Train  300
Planes 1101
Ship   110

标签: pythonpandas

解决方案


看看difflib

以下代码

import difflib
print(difflib.get_close_matches('Car', ['Car', 'Cars', 'Train', 'trainz', 'Planes', 'Plane', 'planses', 'Ship', 'ships']))
print(difflib.get_close_matches('Train', ['Car', 'Cars', 'Train', 'trainz', 'Planes', 'Plane', 'planses', 'Ship', 'ships']))
print(difflib.get_close_matches('Planes', ['Car', 'Cars', 'Train', 'trainz', 'Planes', 'Plane', 'planses', 'Ship', 'ships']))
print(difflib.get_close_matches('Ship', ['Car', 'Cars', 'Train', 'trainz', 'Planes', 'Plane', 'planses', 'Ship', 'ships']))

给你想要的组

['Car', 'Cars']
['Train', 'trainz']
['Planes', 'Plane', 'planses']
['Ship', 'ships']

推荐阅读