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

使用Pandas的apply函数基于列条件生成result列的技术问题

生成result列的解决方案

问题说明

处理一批数据时,需生成result列:

  • 若top_tier不为空,result列留空
  • 若top_tier为空,result列返回所属的上级区域

试过ffill和apply方法未得到预期结果,原本思路是用apply函数在top_tier为空时返回上方区域值,移除top_tier行后再执行ffill。

数据示例

regionadmissions_totalyeartop_tierresult
England2924042014TRUE
North East174092014TRUE
North East174092014TRUE
County Durham22402014North East
Darlington2832014North East
North West413582014TRUE
North West413582014TRUE
Ashton, Leigh & Wigan19432014North West
Blackburn With Darwen Care Trust Plus8652014North West
East Midlands192562014TRUE
East Midlands192562014TRUE
Bassetlaw4282014East Midlands
Derby25242014East Midlands

实现代码

直接用Pandas的条件赋值结合向前填充即可完成,无需移除行:

import pandas as pd

# 假设数据存储在df中
# 第一步:仅保留top_tier非空行的region值,其余设为NaN
df['result'] = df['region'].where(df['top_tier'].notna())
# 第二步:向前填充NaN值,获取最近的上级区域
df['result'] = df['result'].ffill()
# 第三步:将top_tier非空行的result重置为空
df['result'] = df['result'].where(df['top_tier'].isna(), '')

逻辑说明

  • df['region'].where(df['top_tier'].notna()):筛选出top_tier非空行的区域值,其他行转为空值
  • ffill():把空值替换为上一个非空的区域值,也就是对应的上级区域
  • 最后一步的where操作:将top_tier非空行的result清空,完全匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:06:12