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

pandas DataFrame.get()传入存在列列表返回None问题排查

问题现象
  • 已完成加载的pandas DataFrame merged 执行merged.info()可正常输出结构元信息,全字段无空值
  • 运行环境为Google Colab,使用pandas版本为1.3.5
  • 执行代码print(merged.get(['PM2.5_CF1_ug/m3', 'Uptime Minutes', 'RSSI_dbm', 'Temperature_F', 'Humidity_%']))时,未返回目标列对应数值,直接返回None(NoneType类型结果)
  • 问题在未修改任何代码的情况下突发出现,重新完整加载DataFrame后问题未解决
根因说明

pandas 1.3.5版本中DataFrame.get()方法**仅支持传入单个列名(标量值)**作为查询参数,不支持传入列名列表选取多列。

该方法的判断逻辑为:先校验传入的key是否存在于列名中,若不存在则返回默认值None。当传入列表类型的多列名时,列表本身不会被识别为合法列名,因此直接走到默认返回分支输出None,和DataFrame本身的数据完整性、加载状态无关。多列列表传入的支持是pandas 2.0及以上版本才新增的特性。

可行解决方案
  • 通用写法(兼容所有pandas版本,推荐优先使用):直接使用pandas原生方括号索引做多列选取,替换原有.get()调用即可
# 替换原有merged.get(列列表)的写法
target_cols = ['PM2.5_CF1_ug/m3', 'Uptime Minutes', 'RSSI_dbm', 'Temperature_F', 'Humidity_%']
print(merged[target_cols])
  • 保留容错能力的写法:如果需要实现.get()「列不存在时不报错、返回默认值」的特性,可先校验列存在性再做选取
target_cols = ['PM2.5_CF1_ug/m3', 'Uptime Minutes', 'RSSI_dbm', 'Temperature_F', 'Humidity_%']
exist_cols = [col for col in target_cols if col in merged.columns]
# 存在匹配列则返回对应数据,否则返回None,和get的容错逻辑一致
print(merged[exist_cols] if exist_cols else None)
  • 版本升级方案:在Colab中执行以下命令升级pandas到2.0+版本,重启运行时后即可直接使用.get()传入列名列表的写法
!pip install pandas --upgrade

内容的提问来源于stack exchange,提问作者Senthil Vikram Vodapalli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:16:06