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

如何匹配两个DataFrame的关联列并生成对应结果列

匹配DataFrame生成对应列的实现方法

这里提供两种高效方法,实现将df1的id与df2的fruit_id匹配、生成result列的需求:

方法一:使用merge()左连接

merge是Pandas表连接的核心方法,左连接可完整保留df1的所有行,同时匹配df2中的对应数据:

import pandas as pd

# 初始化原始DataFrame
a = [1,1,1,2,3,4,4,5,6]
df1 = pd.DataFrame(a, columns=["id"])

x = [1,2,3,4,5,6]
y = ["apple","orange","banana","lemon","kiwi","melon"]
df2 = pd.DataFrame(list(zip(x, y)), columns=["fruit_id", "fruit_name"])

# 执行左连接,指定匹配键
result_df = pd.merge(df1, df2, left_on="id", right_on="fruit_id", how="left")
# 重命名列并保留目标字段
result_df = result_df.rename(columns={"fruit_name": "result"})[["id", "result"]]

print(result_df)

输出结果:

id   result
0   1    apple
1   1    apple
2   1    apple
3   2   orange
4   3   banana
5   4    lemon
6   4    lemon
7   5     kiwi
8   6    melon

方法二:使用map()字典映射

若df2的fruit_id为唯一值,这种方法更简洁高效,通过字典映射直接生成目标列:

import pandas as pd

# 初始化原始DataFrame
a = [1,1,1,2,3,4,4,5,6]
df1 = pd.DataFrame(a, columns=["id"])

x = [1,2,3,4,5,6]
y = ["apple","orange","banana","lemon","kiwi","melon"]
df2 = pd.DataFrame(list(zip(x, y)), columns=["fruit_id", "fruit_name"])

# 将df2转换为id到名称的映射字典
fruit_mapping = df2.set_index("fruit_id")["fruit_name"].to_dict()
# 映射生成result列
df1["result"] = df1["id"].map(fruit_mapping)

print(df1)

该方法直接在原df1上添加result列,输出结果与方法一完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:33:42