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

如何基于第一个dataframe的列值从另一dataframe添加新列

实现方案

你可以用pandas的关联或映射功能实现需求,以下是两种常用的实现方式:

方法1:左连接匹配(适用多字段匹配场景)

以df的所有行为基准,按省份字段匹配population表的人口数据,保留df全部原有行:

import pandas as pd

# 确保两个表的省份列名、值格式完全一致(拼写、大小写、无前后空格)
merged_df = pd.merge(
    left=df,
    right=population,
    on='Province', # 若两个表省份列名不同,可替换为left_on='df的省份列名', right_on='population的省份列名'
    how='left'
)

方法2:字典映射(适用单字段一对一匹配,运行效率更高)

先把population转换为「省份-人口」的映射字典,再给df新增列直接映射取值:

# 构造省份到人口的映射字典
pop_map = population.set_index('Province')['Population'].to_dict()
# 直接给原df新增Population列
df['Population'] = df['Province'].map(pop_map)

注意事项

  • 匹配前先检查population的省份列是否有重复值,避免匹配后行数异常增多,检查命令:population['Province'].duplicated().any(),返回True时先做去重处理
  • 匹配后可检查人口列是否有缺失值:df['Population'].isnull().sum(),返回值大于0说明df中存在population表里没有收录的省份,需要核对拼写或补充人口数据
  • 若需要保留示例的列顺序,可以在最终输出前手动调整列序:df = df[['Product', 'Province', 'Quantity', 'Population']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:11