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

Python Pandas DataFrame:筛选指定列元素并执行乘法处理

解决方案:处理DataFrame指定列的数值转换

嘿,我来帮你搞定这个问题!你之前的代码跑不通,是因为loc返回的是带索引的Series对象,不是普通的列表或键值对集合,那种循环遍历的方式并不适用。而且在Pandas里,我们优先用矢量化操作处理数据,比手动循环高效得多,代码也更简洁。

下面给你两种简易可行的方案:

方案一:用loc直接定位赋值(推荐,效率最高)

这种方法直接通过条件筛选目标行,对对应列的数值批量修改,是Pandas最常用的操作方式:

# 先复制原DataFrame,避免修改原始数据(不需要保留原数据可跳过这一步)
new_data = data.copy()

# 定位"column_name"列中小于10的行,将这些值乘以10
new_data.loc[new_data['column_name'] < 10, 'column_name'] *= 10

方案二:用apply函数实现逻辑判断

如果你更习惯函数式写法,也可以用apply结合lambda表达式处理:

new_data = data.copy()

# 对列中每个元素判断:小于10就乘10,否则保持原值
new_data['column_name'] = new_data['column_name'].apply(lambda x: x * 10 if x < 10 else x)

为什么你的原代码无法运行?

你原来的代码尝试遍历loc返回的结果,但data['column_name'].loc[data['column_name'] < 10]返回的是Series,它的迭代器只会返回数值本身,不是(索引, 值)这样的元组,所以i[1]这种写法会报错。而且手动循环处理Pandas数据效率极低,尤其是数据量大的时候,矢量化操作才是正确选择。

内容的提问来源于stack exchange,提问作者Inkognito-boi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:23:21