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

pandas传入set作为索引器触发FutureWarning的原因及解决方法

警告触发原因
  • 核心问题是传入pandas DataFrame做列索引的predictors是set(集合)类型:定义特征列时用了集合差集运算set(new_df.columns) - set([target]),返回值是无序的集合对象。
  • pandas新版本已经弃用直接传入集合作为列索引器的写法:集合的无序性会导致选中的列顺序不可控,当前版本仅弹出FutureWarning提示,后续pandas版本会直接抛出错误,官方要求使用有序的列表类型作为索引参数。
  • 警告触发的具体位置就是print(new_df[predictors].head())这一行,方括号内传入集合做列选择的写法不符合新版本规范。
修复方案

只需要将集合类型的特征列结果显式转换为列表即可,原有业务逻辑不需要改动:

  • 最简修改方式,把原有的特征定义行替换为:
predictors = list(set(new_df.columns) - set([target]))
  • 如果需要保持特征列和原DataFrame的列顺序完全一致(避免集合无序打乱列顺序,更适合模型训练场景),推荐用列表推导的写法:
target = 'deposit'
predictors = [col for col in new_df.columns if col != target]

修改后再执行列选择操作就不会再弹出该警告,同时代码可以兼容未来版本的pandas。


内容的提问来源于stack exchange,提问作者David manga

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:48:18