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

基于多列条件的Pandas DataFrame Dept列NaN值填充技术问询

解决方法

针对你的需求,可以通过以下步骤实现指定的NaN值填充:

实现代码

方法1:高效向量化操作(适合大数据集)

import pandas as pd

# 生成「任务编号」到「对应部门」的映射:仅保留印刷机为Beta且描述为Outsource的有效记录
dept_mapping = df[(df['印刷机'] == 'Beta') & (df['描述'] == 'Outsource')].groupby('任务编号')['部门'].first()

# 筛选需要填充的行:印刷机为Beta且部门为空的记录
fill_mask = (df['印刷机'] == 'Beta') & df['部门'].isna()

# 执行填充
df.loc[fill_mask, '部门'] = df.loc[fill_mask, '任务编号'].map(dept_mapping)

方法2:apply遍历实现(逻辑直观,小数据集适用)

import pandas as pd

# 生成任务编号与部门的映射字典
dept_dict = df[(df['印刷机'] == 'Beta') & (df['描述'] == 'Outsource')].set_index('任务编号')['部门'].to_dict()

# 逐行判断并填充
df['部门'] = df.apply(
    lambda row: dept_dict.get(row['任务编号'], row['部门']) 
    if row['印刷机'] == 'Beta' and pd.isna(row['部门']) 
    else row['部门'],
    axis=1
)

说明

  • 两种方法都会先提取Beta印刷机下,描述为Outsource的部门值,并按任务编号建立映射关系
  • 仅对「印刷机为Beta且部门为空」的行进行填充,其他场景的NaN值保持不变
  • 运行后得到的DataFrame将完全匹配你给出的期望结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:30:52