You need to enable JavaScript to run this app. 如何创建仅06月返回值且按Permno分组前向填充的Hold列
优惠活动
大模型
产品
解决方案
定价
更多

如何创建仅06月返回值且按Permno分组前向填充的Hold列

匹配需求的Hold列实现方案(pandas环境)

执行步骤

  1. 基础字段预处理
    • 将字符串格式的Date列转换为标准datetime类型,方便提取月份信息,对应代码:
      df['Date'] = pd.to_datetime(df['Date'])
    • 从Date中提取月份数值,对应代码:
      df['month'] = df['Date'].dt.month
  2. 生成初始Hold列
    全程基于Permno分组做逻辑判断,避免不同主体的数据互相干扰:在每个Permno的独立分组范围内,判断当前行的月份是否为6月,匹配则将当前行的Value赋值给Hold列,不匹配则赋值为空值(NaN)。
    对应实现代码:
    df['Hold'] = df.groupby('Permno', group_keys=False).apply(
        lambda sub_df: sub_df['Value'].where(sub_df['month'] == 6)
    )
    
  3. 组内前向填充(适配后续业务需求)
    为了防止前向填充时不同Permno的数值串值,前向填充操作同样要在Permno分组内执行,不做全局填充。
    对应实现代码:
    df['Hold'] = df.groupby('Permno', group_keys=False)['Hold'].ffill()
    

实用技巧

  • 如果不想做datetime格式转换,也可以直接对原始字符串格式的Date做判断:通过检查Date是否以-06结尾识别6月,替换判断逻辑后的代码为sub_df['Value'].where(sub_df['Date'].str.endswith('-06')),效果完全一致。
  • 不要跳过Permno分组直接做全局判断、全局ffill,一旦数据排序出现波动,很容易出现跨Permno的逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 06:06:03