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

如何在指定行用if逻辑处理Pandas DataFrame的GDP_Growth列?

正确实现方法

你的代码报错是因为直接用if判断布尔Series,而Python的if需要单个布尔值,无法处理pandas返回的布尔序列。下面是两种可行的实现方式:

方法1:使用loc条件赋值

先将目标列初始化为NaN,再给满足条件的行赋值:

import numpy as np

# 先把GDP_Growth列全部设为NaN
unp['GDP_Growth'] = np.nan
# 仅对TIME>2014的行计算并赋值
unp.loc[unp['TIME'] > 2014, 'GDP_Growth'] = unp['GDP_CAP'] - unp['GDP_CAP'].shift(1)

注意:如果你的DataFrame没有按TIME排序,建议先执行排序保证shift(1)取到的是上一年的数据:

unp = unp.sort_values('TIME')

方法2:使用np.where一行实现

利用numpy的向量化条件判断,直接生成目标列:

import numpy as np

unp['GDP_Growth'] = np.where(
    unp['TIME'] > 2014, 
    unp['GDP_CAP'] - unp['GDP_CAP'].shift(1), 
    np.nan
)

如果你的实际需求是TIME不等于2014(而非仅大于2014),只需把条件改成unp['TIME'] != 2014即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:20:07