含数值与字符串的DataFrame调用df.median()报错,求数值列中位数方法
解决方法
直接针对目标数值列计算中位数即可,避免让方法遍历所有列,具体有几种实用方式:
指定目标列计算
如果你明确要计算CompTotal、ConvertedComp这两列的中位数,直接选中它们再调用median():df[['CompTotal', 'ConvertedComp']].median()这种方式精准锁定目标列,完全避开字符串列的干扰。
自动筛选所有数值列
要是需要获取所有数值型列的中位数,不用手动罗列列名,可以先筛选出数值类型的列再计算:# 筛选出整数、浮点数类型的列 numeric_columns = df.select_dtypes(include=['int64', 'float64']).columns df[numeric_columns].median()处理数值列中的脏数据
如果你的数值列里混有字符串(比如CompTotal列存在非数值内容),先把列转换为数值类型,无法转换的内容设为NaN,再计算中位数:import pandas as pd # 转换CompTotal列,错误值转为NaN df['CompTotal'] = pd.to_numeric(df['CompTotal'], errors='coerce') # 转换ConvertedComp列,错误值转为NaN df['ConvertedComp'] = pd.to_numeric(df['ConvertedComp'], errors='coerce') # 计算中位数,会自动忽略NaN值 df[['CompTotal', 'ConvertedComp']].median()
内容的提问来源于stack exchange,提问作者Anupama Sharma
相关产品推荐
相关产品推荐

