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

Python基于类别为另一列填充对应值的Pandas操作问题

Pandas 基于分类列填充对应数值的实现方法

核心逻辑为:先基于已有的分类-数值映射表构造匹配关系,再对应填充到目标表的number列,以下是两种常用实现方案:


方案1:map映射实现(推荐,性能最优)

适合分类和数值为唯一对应关系的场景,实现代码如下:

import pandas as pd

# 你已有的分类映射表df
df = pd.DataFrame({'category':['apple', 'banana', 'grape', 'cat', 'jelly'],
                   'number':[2,3,25,4,1]})
# 待填充的目标表,这里替换为你自己的目标表变量名
df_target = pd.DataFrame({
    'category': ['apple', 'banana', 'apple', 'grape', 'cat', 'jelly', 'cat', 'grape'],
    'name': ['aliya', 'reeva', 'dev', 'ruby', 'cosmo', 'jack', 'goldy', 'frr']
})

# 1. 构造分类到数值的映射字典
mapping = df.set_index('category')['number'].to_dict()
# 2. 匹配填充number列
df_target['number'] = df_target['category'].map(mapping)

如果仅需要填充目标表原有number列的缺失值,不覆盖已有的有效值,可修改为如下代码:

df_target['number'] = df_target['number'].fillna(df_target['category'].map(mapping))

方案2:merge合并实现

适合需要同时合并多个字段的场景,通过左连接保证目标表所有行都保留:

# 取目标表除number外的字段,和映射表左连接匹配数值
df_target = df_target[['category', 'name']].merge(df, on='category', how='left')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:54:05