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
相关产品推荐
相关产品推荐

