You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:拆分AddrCity中州信息至AddrState并清理冗余内容

解决AddrCity列州信息拆分与清理问题

数据录入时部分州信息混入AddrCity单元格,存在无规律的城市+州组合,还有需要移除的, 符号,需求是将州信息迁移到AddrState列,并清理AddrCity列。现有数据集:

AddrLines           AddrCity        AddrState
0        123 street         Titusville FL         NaN
1        456 road           Viera FL              NaN
2        789 place          Melbourne, Fl         NaN
3        001 ave            Wright                VA

你当前的代码仅完成了AddrState的赋值,但未清理AddrCity列的冗余内容,且写法重复繁琐。以下是能同时完成州信息迁移和AddrCity清理的高效方案:

正则表达式批量处理

利用pandas的字符串正则方法,一步完成提取州信息、填充AddrState、清理AddrCity三个操作:

import pandas as pd

# 构造示例DataFrame(已有数据可跳过此步)
data = {
    'AddrLines': ['123 street', '456 road', '789 place', '001 ave'],
    'AddrCity': ['Titusville FL', 'Viera FL', 'Melbourne, Fl', 'Wright'],
    'AddrState': [pd.NA, pd.NA, pd.NA, 'VA']
}
df = pd.DataFrame(data)

# 正则模式:匹配末尾的州缩写(支持带逗号/不带逗号的格式)
state_pattern = r'(?:,?\s)([A-Za-z]{2})$'

# 提取州信息并填充AddrState(保留原有有效值)
df['AddrState'] = df['AddrState'].fillna(
    df['AddrCity'].str.extract(state_pattern, expand=False).str.upper()
)

# 清理AddrCity:移除州信息及残留的逗号、空格
df['AddrCity'] = df['AddrCity'].str.replace(state_pattern, '', regex=True).str.strip(', ')

# 查看处理结果
print(df)

运行后输出结果:

AddrLines    AddrCity AddrState
0  123 street  Titusville        FL
1    456 road        Viera        FL
2   789 place    Melbourne        FL
3     001 ave       Wright        VA

代码说明

  • state_pattern正则能匹配两种格式的州信息:城市 FL或城市, Fl,兼容大小写和逗号分隔的情况
  • fillna确保AddrState列原有有效值(如第3行的VA)不会被覆盖
  • str.upper()统一州缩写为大写格式,保证数据一致性
  • str.replace移除匹配到的州部分,strip(', ')清理可能残留的逗号和空格

这个方案无需逐个判断州的格式,扩展性强,能适配更多州缩写的情况。

内容的提问来源于stack exchange,提问作者feelsgood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 01:24:31