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

如何对比Pandas DataFrame两列并根据匹配输出对应列值?

Pandas 按列匹配取值的简单解决办法

首先先把你给出的数据整理成清晰的结构:

  • A列数据:[3, 4, 1, 2, 1](共5个元素)
  • B、C、D是一一对应的4组匹配关系:
    BCD
    1RedYes
    2BlueNo
    3YellowMaybe
    4GreenTrue

不用费劲用iloc逐个定位单元格,Pandas的map()方法就能高效完成这个匹配需求,步骤如下:

1. 构建匹配映射字典

先把B、C、D的对应关系转换成字典,这样可以快速通过B的值找到对应的C和D:

import pandas as pd

# 先创建存储B-C-D对应关系的小DataFrame
mapping_df = pd.DataFrame({
    'B': [1, 2, 3, 4],
    'C': ['Red', 'Blue', 'Yellow', 'Green'],
    'D': ['Yes', 'No', 'Maybe', 'True']
})

# 生成B到C、B到D的映射字典
b_to_c = mapping_df.set_index('B')['C'].to_dict()
b_to_d = mapping_df.set_index('B')['D'].to_dict()

2. 处理A列生成结果

把你的A列数据放进DataFrame,然后用map()方法批量完成匹配:

# 你的原始A列数据
a_df = pd.DataFrame({'A': [3, 4, 1, 2, 1]})

# 生成对应的C和D结果
a_df['匹配的C值'] = a_df['A'].map(b_to_c)
a_df['匹配的D值'] = a_df['A'].map(b_to_d)

# 输出你需要的结果格式
print("A", ', '.join(a_df['匹配的C值'].tolist()))
print("B", ', '.join(a_df['匹配的D值'].tolist()))

运行结果

执行代码后会输出:

A Yellow, Green, Red, Blue, Red
B Maybe, True, Yes, No, Yes

完全符合你想要的结果。

额外说明

  • set_index('B')是把B列设为索引,这样可以直接通过B的数值来关联对应的C、D值;to_dict()则把这种索引-值的对应关系转换成字典,方便map()调用。
  • map()会自动遍历A列的每个元素,用字典查找对应的取值,比手动用iloc逐个找高效太多,数据量大的时候这个优势会更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 12:27:44