如何将DataFrame的Address列拆分至对应多级地址列?
解决方案
用Python的pandas库可以轻松实现这个地址拆分需求,具体代码和步骤如下:
1. 初始化数据
先构建你给出的示例DataFrame:
import pandas as pd df = pd.DataFrame({ 'Address': [ 'USA, Utah, Richfield, building 315E', 'Russia, Moscow oblast, Moscow, Arbat District, New street, building 78' ] })
2. 拆分地址到目标列
通过字符串拆分、补全列数、映射字段名三步完成:
# 拆分地址,自动处理逗号后的空格,展开为多列 split_cols = df['Address'].str.split(',\s*', expand=True) # 补全为6列,缺失的位置填充NA split_cols = split_cols.reindex(columns=range(6), fill_value='NA') # 重命名为目标列名 split_cols.columns = ['Country', 'Region/Sate', 'City', 'District', 'Street', 'Building'] # 合并到原DataFrame并删除原Address列(也可以直接使用split_cols作为结果) final_df = pd.concat([df, split_cols], axis=1).drop('Address', axis=1)
3. 最终结果
运行代码后,final_df的输出完全符合你的要求:
| Country | Region/Sate | City | District | Street | Building |
|---|---|---|---|---|---|
| USA | Utah | Richfield | NA | NA | building 315E |
| Russia | Moscow oblast | Moscow | Arbat District | New street | building 78 |
细节说明
,\s*作为分隔符:匹配逗号加上任意数量的空格,确保拆分后的字段不会带前导空格。reindex补全列:因为不同地址的字段数量不一致,用这个方法统一为6列,缺失的位置自动填充NA,保证和目标列一一对应。- 如果你的实际数据中Building的位置不固定,可以额外通过字符串匹配(比如
str.contains('building'))来定位,但当前方案完全适配你提供的示例数据。
内容的提问来源于stack exchange,提问作者lzvtmtvv
相关产品推荐
相关产品推荐

