gpt4 book ai didi

python - 将逗号后的最后一项提取到新列中

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:42 26 4
gpt4 key购买 nike

我有一个 pandas 数据框,它基本上是 2 列和 9000 行

CompanyName  |  CompanyAddress

地址在表格中

Line1, Line2, ..LineN, PostCode

即字符串(或 dtype 'object')中以逗号分隔的项目的数量基本上不同,我只想提取邮政编码,即字段中最后一个逗号之后的项目

我试过 Dot notation string manipulation建议(可能很糟糕):

df_address['CompanyAddress'] = df_address['CompanyAddress'].str.rsplit(', ') 

它只是在字段周围放置了“[]”——我没有成功地尝试隔离任何拆分/分区字符串的最后一个组件,maxsplit 引发了错误。

在 EdChums 对 Pandas split Column into multiple columns by comma 发表评论后,我取得了一定程度的成功

pd.concat([df_address[['CompanyName']], df_address['CompanyAddress'].str.rsplit(', ', expand=True)], axis=1)

但是,在隔离邮政编码的同时,这只会创建多个列,而邮政编码位于第 3-6 列中……同样不好。

感觉非常接近,请指教。

    EmployerName    Address
0 FAUCET INN LIMITED [Union, 88-90 George Street, London, W1U 8PA]
1 CITIBANK N.A [Citigroup Centre,, Canary Wharf, Canada Squar...
2 AGENCY 2000 LIMITED [Sovereign House, 15 Towcester Road, Old Strat...
3 Transform Trust [Unit 11 Castlebridge Office Village, Kirtley ...
4 R & R.C.BOND (WHOLESALE) LIMITED [One General Street, Pocklington Industrial Es...
5 MARKS & SPENCER FINANCIAL SERVICES PLC [Marks & Spencer Financial, Services Kings Mea...

最佳答案

给定数据框,

df = pd.DataFrame({'Name': ['ABC'], 'Address': ['Line1, Line2, LineN, PostCode']})

Address Name
0 Line1, Line2, LineN, PostCode ABC

如果您只需要邮政编码,您可以使用 rsplit 提取它并将其重新分配给地址列。它将为您节省 concat 的步骤。

df['Address'] = df['Address'].str.rsplit(',').str[-1] 

你得到

    Address     Name
0 PostCode ABC

编辑:假设您有列表中包含地址值的数据框

df = pd.DataFrame({'Name': ['FAUCET INN LIMITED'], 'Address': [['Union, 88-90 George Street, London, W1U 8PA']]})

Address Name
0 [Union, 88-90 George Street, London, W1U 8PA] FAUCET INN LIMITED

您可以使用

获取最后一个元素
df['Address'] = df['Address'].apply(lambda x: x[0].split(',')[-1])

你得到

    Address     Name
0 W1U 8PA FAUCET INN LIMITED

关于python - 将逗号后的最后一项提取到新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49660209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com