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

在Pandas DataFrame中仅为指定周期年份计算新列C

按特定年份规则计算Pandas DataFrame新列

需求说明

给DataFrame添加列C,仅满足以下两个条件时执行计算:

  • 年份属于每10年周期内的3、5、7、10年(如3、5、7、10、13、15、17、20……这类年份)
  • 年份≤40(处于前50年范围内,实际数据到40年)
    计算公式:C = 0.06*(A + B),不满足条件的年份可设为NaN或指定默认值。

实现步骤与代码

  1. 构造条件判断逻辑
    通过年份对10取模,判断模值是否在{3,5,7,0}(10年的模为0,对应周期内第10年),同时限制年份≤40。

  2. 代码实现

import pandas as pd
import numpy as np

# 构造示例DataFrame,Year从1到40
df = pd.DataFrame({
    'Year': range(1, 41),
    'A': [2000 * i for i in range(1, 41)],
    'B': [200 * i for i in range(1, 41)]
})

# 定义符合计算要求的条件
target_mods = {3, 5, 7, 0}
condition = (df['Year'] % 10).isin(target_mods) & (df['Year'] <= 40)

# 计算列C:符合条件用公式,否则设为NaN(可替换为0等其他值)
df['C'] = np.where(condition, 0.06 * (df['A'] + df['B']), pd.NA)

补充说明

  • 用np.where替代apply,在大数据量场景下效率更高;
  • 若需要将非目标年份的C设为0,只需把pd.NA替换为0即可;
  • 若要扩展到任意年份n,只需将df['Year'] <=40改为df['Year'] <=n。

内容的提问来源于stack exchange,提问作者Nishad V Seeraj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:15:30