在熊猫数据帧(python 3)列中,我需要标准化(例如)"PO BOX"的所有实例,或"P O Box"或"POBOX"等,以"BOX"



我有一个包含 30 个左右同义词的列表,可以在地址中找到这些同义词来表示邮政信箱。我希望能够扫描一个地址,如果地址中有这些同义词之一,请将其更改为简单的 BOX。

首先,我是Python的新手。 我是一个经验丰富的SAS程序员,试图学习Python。 我尝试使用带有 .map() 函数的字典(认为这将像 SAS 格式一样工作),但没有运气。 然后我尝试了类似的东西: df['address'] = df['address'].replace({'PO

BOX': 'BOX', 'P BOX': 'BOX', 'POSTBOX': 'BOX', 'P O BOX': 'BOX', 'POB': 'BOX'}, inplace=True)输入如下所示:(抱歉格式错误)

  • 身份证地址

    0 13943 邮政信箱 1234

    1 14738 510 蓝钟路

    5 27455 5887角大道

    6 27457 200 纽黑文DR套房 10

    9 1595554 POBOX 908

    10 1595971 101 W 7TH STREET

    14 1597234 邮政信箱 616

我希望它看起来像:

id         address 

0 13943 框 1234

1 14738 510 蓝钟路

5 27455 5887角大道

6 27457 200 纽黑文DR套房 10

9 1595554框 908

10 1595971 101 W 7TH STREET

14 1597234框 616

但我得到的是这个:

id    address

0 13943 无

1 14738 无

5 27455 无

6 27457 无

9 1595554 无

10 1595971 无

14 1597234 无

我只是要使用pd。系列,但它与一个数据帧列相同。

rep = {'PO BOX': 'BOX', 'P BOX': 'BOX', 'POSTBOX': 'BOX', 'P O BOX': 'BOX', 'POBOX':'BOX', 'POB': 'BOX'}

address = [
"13943 PO BOX 1234",
"14738 510 BLUE BELL RD",
"27455 5887 CORNERS AVENUE",
"27457 200 NEW HAVEN DR SUITE 10",
"1595554 POBOX 908",
"1595971 101 W 7TH STREET",
"1597234 P O BOX 616"
]

创建熊猫系列。

s = pd.Series(address, name='Addy')

使用替换和正则表达式等于 True。

s.replace(rep, regex=True)
0                     13943 BOX 1234
1             14738 510 BLUE BELL RD
2          27455 5887 CORNERS AVENUE
3    27457 200 NEW HAVEN DR SUITE 10
4                    1595554 BOX 908
5           1595971 101 W 7TH STREET
6                    1597234 BOX 616
Name: Addy, dtype: object

最新更新