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

如何通过行索引对Pandas DataFrame指定值执行乘法运算?

解决Pandas DataFrame特定行数值修改问题

错误原因分析

  • 你的代码出现异常的核心问题是Value列属于object类型(混合了字符串和数值):直接对字符串执行乘法会触发字符串重复逻辑,比如"-10.90979" * 10会生成重复的字符串,这就是你看到的异常输出。
  • 使用mul(10)报错是因为字符串对象没有数值类型的mul方法,只有int/float这类数值类型才能调用该方法。

正确解决方案

方法1:直接用布尔索引定位修改(推荐)

不需要额外获取索引,直接通过属性名称筛选目标行,先将对应Value转为数值再运算:

import pandas as pd

# 定位目标行,转换为数值后乘10并赋值
target_mask = df['Property'] == 'Density (g/cm3)'
df.loc[target_mask, 'Value'] = pd.to_numeric(df.loc[target_mask, 'Value']) * 10

如果需要保留Value列的字符串类型(兼容其他行的字符串值),可以再转成字符串:

target_mask = df['Property'] == 'Density (g/cm3)'
df.loc[target_mask, 'Value'] = (pd.to_numeric(df.loc[target_mask, 'Value']) * 10).astype(str)

方法2:通过索引修改(若你坚持用索引方式)

先获取目标行索引,同样需要转换数值类型后运算:

# 获取目标行的索引
target_idx = df[df['Property'] == 'Density (g/cm3)'].index[0]
# 转数值乘10后赋值
df.loc[target_idx, 'Value'] = pd.to_numeric(df.loc[target_idx, 'Value']) * 10

额外提示

尽量使用df.loc而非链式索引(如df.iloc[row_index][0]),链式索引可能返回数据视图而非副本,导致赋值不生效或出现意外行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:00:58