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

Python按多优先级规则为DataFrame匹配填充country列的实现

Python 多优先级填充DataFrame字段实现方案

实现逻辑

按照要求的3级优先级顺序做值的填充:

  • 第一优先级:两个DataFrame按email左关联获取到的country值
  • 第二优先级:df1自带的country_app_web字段非空值
  • 第三优先级:df1自带的timezone字段非空值

完整实现代码

import pandas as pd

# 构造示例数据,实际使用时替换为你自己的DataFrame读取逻辑即可
df1 = pd.DataFrame({
    'email': ['nhvfstdfg@vxc.com', 'taifoor096@gmail.com', 'nivo1996@gmail.com', 'jorgehersan90@gmail.com', 'syeager2@cox.net'],
    'timezone': ['Europe/Paris', pd.NA, 'US/Eastern', pd.NA, pd.NA],
    'country_app_web': [pd.NA, 'FR', pd.NA, 'UK', pd.NA]
})

df2 = pd.DataFrame({
    'email': ['008023@abpat.qld.edu.au', '0081634947@fanaticsgsiorder.com', '008farhan05@gmail.com', '00bronzy@gmail.com', '00monstar@gmail.com'],
    'country': ['AU', 'AU', 'ID', 'AU', 'AU']
})

# 核心处理逻辑
# 1. 左关联匹配df2的国家信息
df1 = df1.merge(df2[['email', 'country']], on='email', how='left')
# 2. 按优先级逐级填充空缺值
df1['country'] = df1['country'].fillna(df1['country_app_web']).fillna(df1['timezone'])

# 输出查看结果
print(df1)

输出结果说明

示例数据运行后df1的country列最终值如下:

行号emailcountry
0nhvfstdfg@vxc.comEurope/Paris
1taifoor096@gmail.comFR
2nivo1996@gmail.comUS/Eastern
3jorgehersan90@gmail.comUK
4syeager2@cox.net<空>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:33:02