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

如何提取DataFrame列中'zip_code'后的首个单词(邮编)

从DataFrame的location列提取邮编值

需求

从DataFrame的location列字符串中,识别特定单词zip_code并提取其后方的邮编值。

输入示例

name   location
 Bar1   LA Jefferson zip_code 202378 Avenue free
 Pizza  Avenue 45 zip_code 45623 wichita st
 Tacos   Las Americas avenue 7 zip_code 67890 nicolas st

期望输出

name   location                                          
 Bar1    202378 
 Pizza   45623
 Tacos   67890 

现有进展

已实现单个字符串的邮编提取:

str = "address1 355 Turnpike Ste 4  address3 zip_code 02021 country    US   "
str.split("zip_code")[1].split()[0]
>> 02021

解决方案

要对DataFrame的location列逐行执行提取操作,有两种常用方法:

方法1:使用apply方法

把单个字符串的提取逻辑封装成函数,再通过apply作用于整个列:

import pandas as pd

# 构造示例DataFrame
data = {
    'name': ['Bar1', 'Pizza', 'Tacos'],
    'location': [
        'LA Jefferson zip_code 202378 Avenue free',
        'Avenue 45 zip_code 45623 wichita st',
        'Las Americas avenue 7 zip_code 67890 nicolas st'
    ]
}
df = pd.DataFrame(data)

# 定义提取函数
def extract_zip(location_str):
    return location_str.split("zip_code")[1].split()[0]

# 应用到location列,替换原列或生成新列
df['location'] = df['location'].apply(extract_zip)
print(df)

方法2:使用正则表达式(更高效,适合大数据量)

利用str.extract配合正则表达式直接匹配邮编,比apply性能更好:

# 使用正则匹配zip_code后的数字序列
df['location'] = df['location'].str.extract(r'zip_code\s+(\d+)', expand=False)
print(df)

正则表达式r'zip_code\s+(\d+)'的含义:

  • zip_code:匹配固定字符串
  • \s+:匹配一个或多个空格
  • (\d+):捕获一个或多个数字(即邮编值)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:35:47