繁体   English   中英

按街道地址分组并将其分为街道名称和编号

[英]Grouping by street address and splitting it into street name and number

我有一个包含以下字段的数据集:

  • 建筑GUID( abcd-efgh-5678-1234...等)
  • 街道地址( 1256 Grant St500 wall st等)
  • 价格( $5000$10000等)

基于此,我想在Pandas的DataFrame对象中添加两个新列

  • 街道名称( wall st
  • 街道号码( 500

到目前为止,我已经能够按如下方式获取wall st单词的特定实例:

str_street = 'Wall St'
wall_st  = dataset.loc[dataset['street_address'].str.lower().str.endswith(str_street.lower()), :]
wall_st['street_name'] = ???
wall_st['street_address_number'] = ???

我该怎么做呢?

df = pd.DataFrame({'street address': ['500 wall street', '123 blafoo']})
df['street address'].apply(lambda x: pd.Series(x.split(None, 1)))

将导致:

     0            1
0  500  wall street
1  123       blafoo

然后,您可以将列重命名,并将其pd.concat重命名为原始数据框。

我认为您需要extract

df = pd.DataFrame({'street address': ['500 wall street', '123 blafoo']})
print (df)
    street address
0  500 wall street
1       123 blafoo

df1 = df['street address'].str.extract('(?P<number>\d+)(?P<name>.*)', expand=True)
print (df1)
  number          name
0    500   wall street
1    123        blafoo

解决方案与split

df[['number','name']] = df['street address'].str.split(n=1, expand=True)
print (df)
    street address number         name
0  500 wall street    500  wall street
1       123 blafoo    123       blafoo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM