Skip to main content
 首页 » 编程设计

python之Pandas 合并包含相同信息但列名略有不同的列

2025年05月04日19JustinYoung

我有一组来自 CMS (Medicare) 的 Excel 电子表格,我想对其进行分析,并已使用 pandas 将它们成功导入到数据框中。不幸的是,列名不统一,许多相似,但由于随机空格、新行或额外信息而有所不同。示例:

  • “血管或循环系统疾病”
  • “血管或循环系统疾病 (CC 104-106)”
  • '血管或循环系统疾病'

或

  • '身份证\n号码'
  • '身份证\n号码'
  • '身份证号码'

我会简单地单独更改列的名称 pandas: Merge two columns with different names? ,但我有超过 350 列,并且它们的列名将来很可能会更改。

一些想法是使用正则表达式来创建案例来匹配名称,但我发现很难捕获所有案例并且将来可能会遇到新案例。另一个想法是使用 NLP 来软匹配列。

有什么建议或图书馆吗?谢谢!

请您参考如下方法:

您可以使用库中内置的 difflib 比较字符串之间的相似性:

from difflib import SequenceMatcher 
 
def get_sim_ratio(x, y): 
    return SequenceMatcher(None, x, y).ratio() 
 
print(get_sim_ratio('Vascular or Circulatory Disease', 'Vascular or Circulatory Disease (CC 104-106)')) 
print(get_sim_ratio('Endocrine Disease', 'Vascular or Circulatory Disease (CC 104-106)')) 

这个输出:

0.8266666666666667 
0.36065573770491804 

使用它的输出,您可以设置一定级别的灵敏度来合并列(即如果输出 > .5 -> 合并)