将引用列表的数据框中的缩写替换为完整单词

2024-10-02 00:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框(df),包含名称和缩写,如下所示:

Name
ABC CO
XYZ CO LTD 
S.A.L.P, S.P.A.
XXX L.P 
NUR YER SAN.TIC.LTD 
BAAB TERMINALS LTD.

我必须用它们的完整单词替换缩写词,并参考列表。下面是我的方法

import pandas as pd
repl = {'CO' : 'COMPANY','LTD' : 'LIMITED','L.P' : 'LIMITED PARTNERSHIP','LTD.' : 'LIMITED','.LTD' : 'LIMITED'}
repl = {rf'\b{k}\b': v for k, v in repl.items()}

df2 = df['Name'].replace(repl, regex=True)
df2

下面是输出

0                        ABC COMPANY
1                XYZ COMPANY LIMITED
2    S.A.LIMITED PARTNERSHIP, S.P.A.
3            XXX LIMITED PARTNERSHIP
4            NUR YER SAN.TIC.LTD 
5             BAAB TERMINALS LIMITED.
Name: Name, dtype: object

在这里,S.A.L.p不得用L.p代替

预期产出:

    0                        ABC COMPANY
    1                XYZ COMPANY LIMITED
    2                    S.A.L.P, S.P.A.
    3            XXX LIMITED PARTNERSHIP
    4            NUR YER SAN.TIC.LIMITED
    5             BAAB TERMINALS LIMITED.
    Name: Name, dtype: object

只有当L.p作为一个不同的字符串单独出现时,而不是当它是某个字符串的一部分时,代码才应将其替换为有限合伙。有谁能帮我解决这个问题吗。谢谢


Tags: nameticreplcompanyxxxabcsanco
2条回答

在单词前后加空格,例如L.p:

repl = {'CO' : 'COMPANY','LTD' : 'LIMITED',' L.P ' : ' LIMITED PARTNERSHIP '}

您可以将此正则表达式与环视一起使用,以确保在key前后没有非空格:

repl = {rf'(?<!\S){re.escape(k)}(?!\S)': v for k, v in repl.items()}

在这里:

  • (?<!\S):断言前一个字符不是非空格
  • (?!\S):断言下一个字符不是非空格

相关问题 更多 >

    热门问题