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

如何利用正则表达式([A-Z][A-Z]?)连接两个邮编相关DataFrame

用正则提取邮编区域实现DataFrame连接

以下是基于Python pandas的具体实现步骤:

1. 准备示例数据

先定义两个示例DataFrame,模拟你的数据结构:

import pandas as pd

# 包含邮编区域的DataFrame
df_regions = pd.DataFrame({
    'postcode_area': ['BA', 'M', 'SW'],
    'region_name': ['Bath', 'Manchester', 'South West London']
})

# 包含邮区县的DataFrame
df_districts = pd.DataFrame({
    'postcode_district': ['BA1', 'BA2', 'M18', 'M20', 'SW1'],
    'district_population': [85000, 62000, 41000, 38000, 29000]
})

2. 从邮区县提取邮编区域

使用str.extract()方法,结合你指定的正则表达式(建议加上^确保匹配开头的字母),提取每个邮区县对应的邮编区域:

# 提取开头1-2个大写字母作为邮编区域
df_districts['extracted_area'] = df_districts['postcode_district'].str.extract(r'^([A-Z][A-Z]?)', expand=False)
  • ^:匹配字符串开头,避免捕获邮编中间的字母(比如某些特殊邮编的情况)
  • ([A-Z][A-Z]?):捕获1个或2个大写字母的组,?表示第二个字母可选
  • expand=False:直接返回Series,方便后续连接

3. 基于提取的区域进行连接

用pd.merge()方法,以提取的区域列和df_regions的邮编区域列作为连接键:

# 内连接(只保留两边都匹配的记录)
merged_df = pd.merge(
    df_districts,
    df_regions,
    left_on='extracted_area',
    right_on='postcode_area',
    how='inner'
)

# 如果需要保留所有邮区县记录,用左连接:
# merged_df = pd.merge(df_districts, df_regions, left_on='extracted_area', right_on='postcode_area', how='left')

4. 清理冗余列(可选)

如果不需要提取的中间列,可以删除:

merged_df.drop('extracted_area', axis=1, inplace=True)

最终得到的merged_df会把邮区县数据和对应的区域信息关联起来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:27:35