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

Python中如何将dataframe数值列除以2并解决TypeError报错

报错原因

直接调用df.div(2)触发TypeError的核心原因是你的DataFrame中包含id、date两列字符串类型的非数值列,无法直接参与除法运算。

解决方法

方法1:自动筛选所有数值列处理

无需手动指定列名,自动识别所有数值类型的列做除法,非数值列保留原值不变:

# 直接修改原DataFrame
df[df.select_dtypes('number').columns] = df.select_dtypes('number').div(2)

# 不修改原数据,生成新DataFrame的写法
new_df = df.copy()
new_df[new_df.select_dtypes('number').columns] = new_df.select_dtypes('number').div(2)

方法2:手动指定待处理列

如果你明确知道需要处理的列范围,直接指定列名操作即可,运算效率更高:

# 本例中待处理的数值列为aa、bb、cc、dd
process_cols = ['aa', 'bb', 'cc', 'dd']
df[process_cols] = df[process_cols].div(2)

完整测试代码

import pandas as pd
# 构造示例数据
data = {
    'id': ['staff', 'staff2'],
    'date': ['Q1 23', 'Q2 23'],
    'aa': [6, 6],
    'bb': [2, 2],
    'cc': [6, 6],
    'dd': [0, 0]
}
df = pd.DataFrame(data)
# 执行除法运算
df[df.select_dtypes('number').columns] = df.select_dtypes('number').div(2)
print(df)

运行后输出结果和你预期的一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:06