Pandas DataFrame多列匹配条件下从其他列取值填充新列的实现方法
解决方案
方法:使用map映射匹配(无排序依赖,高效)
核心逻辑是先构建col2到col3的映射关系,直接对col1的值做匹配查找,完全不依赖数据行的排序,符合业务要求。
代码示例:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({'col1': ['a', 'b', 'c', 'd'], 'col2': ['b', 'c', 'd', 'e'], 'col3': [1.0, 2.0, 3.0, 4.0]}) # 构建col2到col3的映射关系 col2_col3_map = df.set_index('col2')['col3'] # 对col1做映射得到col4 df['col4'] = df['col1'].map(col2_col3_map) print(df)
运行输出和预期结果完全一致:
col1 col2 col3 col4 0 a b 1.0 NaN 1 b c 2.0 1.0 2 c d 3.0 2.0 3 d e 4.0 3.0
方案说明
- 无排序依赖:映射基于键值对匹配,无论原数据行顺序如何打乱都能得到正确结果
- 性能优秀:时间复杂度为O(n),适合大数据量场景
- 逻辑简洁:不需要额外的循环、条件判断,可读性远高于
mask等条件判断类方法,更适配跨行列匹配的需求场景
内容的提问来源于stack exchange,提问作者hickz
相关产品推荐
相关产品推荐

