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

Pandas如何根据DataFrame其他列的条件计算生成新列值

Pandas按日期区间计算新列实现方案

首先你需要先确保Date列已转换为pandas标准日期类型,否则无法正确提取月份做判断,转换代码如下:

import pandas as pd
import numpy as np

# 日期类型转换,若你的Date列已经是datetime类型可跳过这步
df['Date'] = pd.to_datetime(df['Date'])

以下提供两种生产环境常用的实现方式,均为向量化运算,执行效率远高于逐行遍历:

  • 方法1:numpy.where 写法简洁,执行效率最高
df['Price_new'] = np.where(
    # 判断条件:日期月份在4-10月区间
    df['Date'].dt.month.between(4, 10),
    # 满足条件时Price加0.01
    df['Price'] + 0.01,
    # 不满足条件(即11月-次年3月)时Price加0.12
    df['Price'] + 0.12
)
  • 方法2:pandas原生loc索引赋值,逻辑直观易排查
# 先给所有行赋11月-次年3月区间的默认值
df['Price_new'] = df['Price'] + 0.12
# 再筛选出4-10月的行,覆盖为对应区间的值
df.loc[df['Date'].dt.month.between(4, 10), 'Price_new'] = df['Price'] + 0.01

注意:你问题里写的第一段赋值代码存在笔误:df[Price] 缺少列名的引号包裹,正确写法为df['Price'],否则运行时会把Price识别为未定义变量直接报错。

  • 补充说明:不要使用df.apply逐行做判断的写法,数据量较大时运行速度会比上述两种向量化实现慢几十到上百倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:27:19