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

如何不使用循环为Pandas DataFrame的Data2列条件赋值?

无需循环的实现方案

当然有,Pandas本身提供了多种矢量化操作的方式,比循环更高效(尤其是数据量较大时),也更符合Pandas的惯用写法,以下是几种常用方案:

方法1:使用numpy.where(最直观的条件赋值)

利用np.where根据Status的布尔值直接生成对应列的值,一步完成赋值:

import pandas as pd
import numpy as np

d = {"Data1":[1,2,5], "Data2":["","",""], "Status": [False, True, True]}
df = pd.DataFrame(data = d)

# 核心代码
df["Data2"] = np.where(df["Status"], "Done", "")

方法2:使用Series.map映射布尔值

把布尔值通过字典映射成目标字符串:

df["Data2"] = df["Status"].map({True: "Done", False: ""})

方法3:布尔索引直接赋值

先给所有行设为空字符串,再定位Status为True的行赋值"Done":

df["Data2"] = ""
df.loc[df["Status"], "Data2"] = "Done"

这三种方法都不需要手动遍历行,Pandas会在底层优化执行效率,比你原来的循环代码更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:42:47