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

基于另一列值替换DataFrame中的NaN缺失值

问题:按客户编号替换DataFrame中的NaN缺失值

原始数据

df1(含缺失值)

代码定义:

import pandas as pd
import numpy as np

df1 = pd.DataFrame([[1001, np.NaN], [1001,'C'], [1004, 'D'],[1005, 'C'], 
                   [1005,'D'], [1010, np.NaN],[1010,np.NaN],[1010,'F']], columns=['CustomerNr','Costs'])

对应表格:

CustomerNrCosts
1001NaN
1001C
1004D
1005C
1005D
1010NaN
1010NaN
1010F

df2(替换规则)

代码定义:

df2 = pd.DataFrame([[1001, 'X'], [1010, 'Y']], columns=['CustomerNr','New Costs'])

对应表格:

CustomerNrNew Costs
1001X
1010Y

期望输出

处理后的df1表格:

CustomerNrCosts
1001X
1001C
1004D
1005C
1005D
1010Y
1010Y
1010F

解决方案

步骤1:将替换规则转换为字典

把df2中的客户编号和对应替换值转换成字典,实现快速匹配:

replace_dict = df2.set_index('CustomerNr')['New Costs'].to_dict()

步骤2:填充NaN值

通过fillna结合map方法,仅替换Costs列的NaN值,替换逻辑为按客户编号匹配字典中的对应值:

df1['Costs'] = df1['Costs'].fillna(df1['CustomerNr'].map(replace_dict))

执行上述代码后即可得到期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:37:33