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

Pandas DataFrame列求中位数遇类型错误:无法转换为数值

问题解决方法

核心原因

报错信息里的[nan nan '5' ...]说明你的rating列虽然替换了缺失值,但有效值还是字符串类型(比如'5'),而非数值类型(int/float)。Pandas的median()方法无法对混合字符串与NaN的object类型列计算中位数,这就是报错的根源。

解决步骤

  1. 将列转换为数值类型:使用pd.to_numeric()把字符串形式的数字转为数值,同时自动将无法转换的'Not given'(或其他非数字字符串)转为NaN,一步完成缺失值处理与类型转换:
import pandas as pd
import numpy as np

# 替换缺失值并转换为数值类型
df1['rating'] = pd.to_numeric(df1['rating'], errors='coerce')
  1. 计算中位数:此时列已为数值类型,直接调用median()即可:
mrat_y = df1['rating'].median(skipna=True)

补充说明

你之前单独替换缺失值的操作没有改变列的类型,因为原列里的有效数值是字符串格式,替换后列仍为object类型。合并类型转换与缺失值处理的方式更高效,也能避免类型不匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:17:12