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

如何在Pandas DataFrame中将含美国州代码的位置替换为USA?

处理Twitter位置数据:将含美国州代码的条目替换为USA

这里有个简洁高效的方法来处理你的Pandas DataFrame中的location列,完美匹配你的需求:

步骤1:定义美国州缩写列表

首先,我们需要完整的美国州两字母缩写列表,确保不会遗漏任何可能的匹配项:

# 完整的美国州两字母缩写列表
state_list = ['AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA',
              'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD',
              'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ',
              'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC',
              'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY']

步骤2:构造正则匹配模式

我们用正则表达式的单词边界(\b)来确保只匹配独立的州代码,避免误匹配类似"Cambridge"里的"CA"这种情况:

import re

# 构造正则模式,支持不区分大小写匹配
pattern = re.compile(r'\b(' + '|'.join(state_list) + r')\b', re.IGNORECASE)

步骤3:批量替换符合条件的位置值

利用Pandas的向量化操作(比逐行apply更高效),创建匹配掩码并替换值:

import pandas as pd

# 假设你的DataFrame名为tweets_df
# 创建掩码:匹配含州代码的非空值
mask = tweets_df['location'].str.contains(pattern, na=False)

# 将匹配的条目替换为"USA"
tweets_df.loc[mask, 'location'] = 'USA'

关键细节说明

  • re.IGNORECASE:确保不区分大小写,比如"scottsdale, az"或"Mission Viejo, CA"都能被匹配
  • na=False:空值(NaN)不会被替换,保持原样
  • 单词边界\b:避免误匹配嵌入在单词中的州代码(比如"California"里的"CA"不会被误判)

测试效果

假设你的原始数据是:

location
Scottsdale, AZ
London, UK
USA
NaN
Mission Viejo, CA

处理后会变成:

location
USA
London, UK
USA
NaN
USA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:59:03