如何用Pandas合并CCAM词库同CODE的LABEL并剔除差异后缀?
解决同一CCAM code对应多label的公共前缀提取问题
针对你遇到的同一code对应多个仅后缀不同的label的情况,核心是提取所有对应label的最长公共前缀,再完成分组合并。你之前的代码只是取了第一个label,没有处理前缀提取,下面是具体解决方案:
1. 实现最长公共前缀提取函数
先写一个函数,接收字符串列表,返回它们的最长公共前缀,同时处理末尾可能残留的逗号和空格:
def longest_common_prefix(strings): if not strings: return "" # 以最短字符串为基准,减少对比次数 shortest_str = min(strings, key=len) for idx, char in enumerate(shortest_str): for s in strings: if s[idx] != char: # 截断到不同字符前的位置,清理末尾的逗号和空格 return shortest_str[:idx].rstrip(', ') # 如果所有字符都匹配,返回清理后的最短字符串 return shortest_str.rstrip(', ')
2. 分组合并并应用前缀提取
用groupby结合上面的函数,替换原来的LABEL处理逻辑,同时保留你原有的EXTENSION字段处理:
import pandas as pd # 假设你的原始数据框为df df_merged = df.groupby('CODE').agg({ 'LABEL': longest_common_prefix, 'EXTENSION': 'first' }).reset_index()
效果验证
针对你给出的示例数据:
- 对于
AHQP002,两个label的公共前缀会被提取为Electromyography by surface ...(省略号部分为共同内容) - 对于
JKFC002,会得到Subtotal hysterectomy, by laparoscopy
完全符合你只保留共同前缀的需求。
内容的提问来源于stack exchange,提问作者Papa Yatma Diop
相关产品推荐
相关产品推荐

