Pandas DataFrame列求中位数遇类型错误:无法转换为数值
问题解决方法
核心原因
报错信息里的[nan nan '5' ...]说明你的rating列虽然替换了缺失值,但有效值还是字符串类型(比如'5'),而非数值类型(int/float)。Pandas的median()方法无法对混合字符串与NaN的object类型列计算中位数,这就是报错的根源。
解决步骤
- 将列转换为数值类型:使用
pd.to_numeric()把字符串形式的数字转为数值,同时自动将无法转换的'Not given'(或其他非数字字符串)转为NaN,一步完成缺失值处理与类型转换:
import pandas as pd import numpy as np # 替换缺失值并转换为数值类型 df1['rating'] = pd.to_numeric(df1['rating'], errors='coerce')
- 计算中位数:此时列已为数值类型,直接调用
median()即可:
mrat_y = df1['rating'].median(skipna=True)
补充说明
你之前单独替换缺失值的操作没有改变列的类型,因为原列里的有效数值是字符串格式,替换后列仍为object类型。合并类型转换与缺失值处理的方式更高效,也能避免类型不匹配的问题。
内容的提问来源于stack exchange,提问作者Frank Naso
相关产品推荐
相关产品推荐

