如何解决DataFrame.quantile中numeric_only参数弃用的FutureWarning?
解决DataFrame.quantile()的FutureWarning问题
这个警告是因为Pandas计划修改quantile()方法的numeric_only默认参数——当前默认值是True(仅计算数值列的分位数),未来版本会改成False(尝试对所有列计算,包括非数值列)。要消除警告,只需显式指定参数或提前筛选数值列:
方法1:显式指定numeric_only参数
把原来调用quantile()的代码,加上numeric_only=True参数,明确沿用当前的默认行为:
# 原代码(触发警告) q1 = df.quantile(0.25) q3 = df.quantile(0.75) # 修改后(消除警告) q1 = df.quantile(0.25, numeric_only=True) q3 = df.quantile(0.75, numeric_only=True)
方法2:先筛选数值列再计算分位数
如果你的DataFrame包含非数值列,也可以先提取仅数值列的子集,再调用quantile():
# 筛选所有数值类型的列 numeric_df = df.select_dtypes(include=['number']) # 对数值列计算分位数 q1 = numeric_df.quantile(0.25) q3 = numeric_df.quantile(0.75)
两种方法都能彻底消除这个FutureWarning,根据你的代码场景选择即可。
内容的提问来源于stack exchange,提问作者Thando Johnson
相关产品推荐
相关产品推荐

