如何基于指定规则填充pandas DataFrame的exit_value列
给你一个用pandas内置函数实现的方案,不用手动遍历索引,代码如下:
import pandas as pd # 先把空字符串替换成缺失值方便后续处理 df['exit_value'] = df['exit_value'].replace('', pd.NA) # 生成分组标记:每遇到一个type为S的行,分组计数加1,将每个S对应后续的行分到同一组 df['temp_group'] = df['type'].eq('S').cumsum() # 按分组处理:每个组内向前填充缺失值,仅填充到组内第一个L对应的行位置 df['exit_value'] = df.groupby('temp_group', group_keys=False).apply( lambda group: group['exit_value'].ffill().where( group.index <= group[group['type'] == 'L'].index.min(), group['exit_value'] ) ) # 删除临时生成的分组列 df = df.drop('temp_group', axis=1)
运行后输出的结果和你需要的完全一致。
思路说明:
- 核心逻辑是把每个S和它后续直到下一个S之前的行归为同一组,保证每个组内只有一个用来填充的S值
- 分组后对每个组单独处理:先向前填充缺失值,同时限制填充范围只到组内第一个L的位置,超过L的行保留原来的空值
- 如果你需要的话可以自行调整
exit_value的输出数据类型,比如转成整数或者字符串格式。
内容的提问来源于stack exchange,提问作者ProcolHarum
相关产品推荐
相关产品推荐

