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列最终值如下:
| 行号 | country | |
|---|---|---|
| 0 | nhvfstdfg@vxc.com | Europe/Paris |
| 1 | taifoor096@gmail.com | FR |
| 2 | nivo1996@gmail.com | US/Eastern |
| 3 | jorgehersan90@gmail.com | UK |
| 4 | syeager2@cox.net | <空> |
内容的提问来源于stack exchange,提问作者nikki
相关产品推荐
相关产品推荐

