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

如何缩短DataFrame的布尔输出过滤代码?循环实现可简化吗

简化Pandas布尔列生成的方法

嘿,这事儿超简单!你现在写的循环代码完全可以用Pandas的矢量化操作来简化,不仅代码更简洁,运行效率还高得多(尤其是数据量大的时候)。

先看看你当前的实现:

a = []
for i in df['Age'].values:
    if i > 40:
        a.append(True)
    else:
        a.append(False)
df['over 40?'] = a

最优简化方案:直接用Series矢量化比较

Pandas的Series天生支持和标量做批量比较,会自动返回一个布尔值的Series,直接赋值给新列就行:

df['over 40?'] = df['Age'] > 40

这一行代码就搞定了你原来循环做的所有事,而且底层是C实现的矢量化运算,比Python循环快好几个量级,数据越多差距越明显。

备选方案:使用apply(不推荐大数据量场景)

如果你更习惯函数式写法,也可以用apply,但性能不如上面的矢量化方法:

df['over 40?'] = df['Age'].apply(lambda x: x > 40)

简单来说,Pandas就是为批量数据操作设计的,尽量别手动遍历每一行——既写得麻烦,又拖慢运行速度~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:57:48