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

如何计算DataFrame除前两列外其余列的倒数?解决ValueError报错

解决DataFrame排除前两列计算倒数的问题

问题分析

你写的df_sort[df_sort.iloc[:,2:]]是错误的索引方式——Pandas会把传入的DataFrame当作布尔筛选条件,但你的iloc[:,2:]是数值列,无法转换成布尔数组,因此抛出ValueError。

正确实现方法

要实现除前两列外所有列取倒数,可以按以下方式操作:

方法一:直接修改原DataFrame

直接选中目标列并赋值计算结果,一步完成更新:

# 对第3列及之后的列计算倒数,覆盖原列数据
df_sort.iloc[:, 2:] = df_sort.iloc[:, 2:].rdiv(1)
# 也可以用更直观的写法:
# df_sort.iloc[:, 2:] = 1 / df_sort.iloc[:, 2:]

方法二:生成新DataFrame(不改动原数据)

如果需要保留原数据,可拆分后再合并:

# 提取前两列字符串类型数据
first_two_cols = df_sort.iloc[:, :2]
# 计算剩余数值列的倒数
reciprocal_cols = df_sort.iloc[:, 2:].rdiv(1)
# 合并两部分得到新DataFrame
new_df = pd.concat([first_two_cols, reciprocal_cols], axis=1)

额外注意点

  • 确保iloc[:,2:]的列都是数值类型(int/float),若存在非数值列需先做类型转换或筛选
  • 若列中有0值,计算倒数会得到inf,可按需处理:
    import numpy as np
    df_sort.iloc[:, 2:] = df_sort.iloc[:, 2:].replace(0, np.nan).rdiv(1)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:43:09