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

如何基于Pandas的reset_flag和session_id生成new_name列?

高效生成new_name列的Pandas原生实现

核心思路

利用Pandas分组(groupby)+ 向前填充(ffill)的组合功能实现,全程避免循环迭代,性能远高于iterrows()方案。

代码实现与说明

import pandas as pd

# 先统一处理reset_flag的格式(兼容空值/字符串TRUE的情况)
df['reset_flag'] = df['reset_flag'].map(lambda x: True if str(x).upper() == 'TRUE' else False)

# 生成new_name列
df['new_name'] = df.groupby('session_id')['name'].apply(
    lambda x: x.where(x.reset_flag).ffill()
)
  • where(x.reset_flag):仅保留reset_flag=True行的name值,其余行转为缺失值(NaN)
  • ffill():在同一session_id分组内,向前填充最近的非缺失值,正好匹配“沿用最近一次重置点名称”的需求

验证结果

处理后的数据将完全符合你给出的预期输出示例:

session_idnamereset_flagnew_name
06c97a-bc7-6cc-29f-65978ee8dsome_name_1Truesome_name_1
06c97a-bc7-6cc-29f-65978ee8dsome_name_1Falsesome_name_1
06c97a-bc7-6cc-29f-65978ee8dsome_name_1Falsesome_name_1
06c97a-bc7-6cc-29f-65978ee8dsome_name_2Truesome_name_2
............
3943d5-e1e-63e-6c4-aa1899bd9some_name_6Falsesome_name_5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:55:15