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

如何按条件对Pandas DataFrame的prix列做乘法并修复异常

问题修复方案

你的问题出在**prix列的数据类型是字符串而非数值型**,当你对字符串执行x * 1000时,Python会把它当成字符串重复操作,所以"57"*1000就会变成一串重复的"575757...",而不是数值乘法的结果。

修复步骤如下:

  1. 先将prix列转换为数值类型(整数或浮点数),确保乘法是数学运算而非字符串操作
  2. 再执行你原本的条件逻辑(仅对长度为2的数值乘以1000)

基础修复代码

# 先转换为整数类型(如果是小数就用float)
c['prix'] = c['prix'].astype(int)
# 执行条件乘法
c['prix'] = c['prix'].apply(lambda x: x * 1000 if len(str(x)) == 2 else x)

更高效的矢量化写法(推荐)

用numpy的where替代apply,性能更好,尤其适合大数据集:

import numpy as np

c['prix'] = c['prix'].astype(int)
c['prix'] = np.where(c['prix'].astype(str).str.len() == 2, c['prix'] * 1000, c['prix'])

处理脏数据的情况

如果prix列里存在非数值的无效值,可以用pd.to_numeric强制转换并处理错误:

c['prix'] = pd.to_numeric(c['prix'], errors='coerce')  # 无效值会转为NaN
# 只对非空且长度为2的数值执行乘法
c['prix'] = np.where((c['prix'].notna()) & (c['prix'].astype(str).str.len() == 2), c['prix'] * 1000, c['prix'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:03:21