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

Python pandas如何将df1的Marks值赋值给df2中同姓名的不同行

Pandas跨表匹配填充值实现方案

方法1:字典映射*(推荐,执行效率高,完全保留原df2行顺序)*

将df1转为姓名-分数的映射字典,直接给df2的Marks列赋值即可:

import pandas as pd

# 你已有的数据初始化代码
df1 = pd.DataFrame({'Name': ['rumul', 'rahul',
                             'ravi', 'imran'],
                    'Marks': [5, 20, 8, 12]})
 
df2 = pd.DataFrame({'Name': ['rumul', 'rahul',
                             'rahul', 'ravi',
                             'imran','ravi', 'ravi','imran','rahul','ravi'],
                    'Marks': ['','','','','','','','','','']})

# 核心填充代码
name_score_map = df1.set_index('Name')['Marks'].to_dict()
df2['Marks'] = df2['Name'].map(name_score_map)

# 若df2存在df1中没有的姓名,可指定默认填充值,示例默认填0
# df2['Marks'] = df2['Name'].map(name_score_map).fillna(0)

方法2:左连接实现

如果习惯用表关联逻辑处理,可以用左连接实现,同样保留原df2的行顺序:

# 先删除df2原有空的Marks列,再和df1基于Name字段左连接
df2 = df2.drop('Marks', axis=1).merge(df1, on='Name', how='left')

两种方法最终得到的df2都和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:06:04