我有一只熊猫数据,实质上是两列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...发布于 2018-04-04 21:09:56
考虑到DataFrame,
df = pd.DataFrame({'Name': ['ABC'], 'Address': ['Line1, Line2, LineN, PostCode']})
Address Name
0 Line1, Line2, LineN, PostCode ABC如果您只需要邮编,您可以使用rsplit提取该代码并将其重新分配到列地址。它可以帮你节省一步时间。
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发布于 2018-04-04 21:00:51
只需将现有列重新拆分为2列--现有列和新列。或者两个新列,如果您想要保持现有列不变。
df['Address'], df['PostCode'] = df['Address'].str.rsplit(', ', 1).str编辑:由于OP的Address列是一个包含一个字符串的列表,这里有一个具体的解决方案:
df['Address'], df['PostCode'] = df['Address'].map(lambda x: x[0]).str.rsplit(', ', 1).str发布于 2018-04-04 21:02:27
rsplit返回一个列表,尝试rsplit(‘,’)获取源行中的最后一个元素
https://stackoverflow.com/questions/49660209
复制相似问题