使用corr()传入numeric_only参数触发TypeError报错求助
解决pandas corr()函数numeric_only参数报错的问题
问题原因
你遇到的报错是因为你的pandas版本过低——numeric_only参数是在pandas 1.5.0版本才新增的,低于该版本的pandas根本不支持这个参数,所以会提示"unexpected keyword argument"。另外你对参数的理解有误:这个参数并没有被弃用,在高版本pandas中它是有效可用的。
解决方案
有两种可行的解决方式:
- 升级pandas版本
把pandas升级到1.5.0及以上版本,之后就能直接使用numeric_only=True参数:
df.corr(numeric_only=True)
- 手动筛选数值列(无需升级)
如果不想升级版本,可以先筛选出数据集中的数值类型列,再计算相关性:
# 筛选所有数值类型的列 numeric_df = df.select_dtypes(include=['int64', 'float64', 'int32', 'float32']) # 计算相关性矩阵 corr_matrix = numeric_df.corr()
或者更简洁的写法,用include='number'匹配所有数值类型:
numeric_df = df.select_dtypes(include='number') corr_matrix = numeric_df.corr()
内容的提问来源于stack exchange,提问作者Bernardo Castanheira
相关产品推荐
相关产品推荐

