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

如何用列表推导式为Pandas DataFrame指定行的列赋值?

解决Pandas DataFrame批量修改特定行列值的问题

为什么你的列表推导式报错

列表推导式要求内部是表达式,而dataframe.loc[...] = 1是赋值语句,不属于表达式范畴,所以会触发SyntaxError。而且你本来的需求是修改DataFrame,不需要生成列表,用列表推导完全没必要。

正确的实现方式

方法1:用isin()批量处理(推荐,Pandas原生高效写法)

直接利用Pandas的向量化操作,一次性完成修改,比循环效率高得多:

dataframe.loc[dataframe['id'].isin(indexes), 'column_to_be_changed'] = 1

该语句会直接把所有id在indexes集合中的行的目标列值设为1。

方法2:普通for循环(若需逐元素处理)

如果必须逐个遍历indexes里的元素,用普通for循环即可,逻辑和你单独执行的有效语句一致:

for x in indexes:
    dataframe.loc[dataframe['id'] == x, 'column_to_be_changed'] = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:41:31