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

如何用列表+非列表方式删除pandas DataFrame列并解决报错

报错原因

原代码的写法存在两个问题:

  • 你尝试用{}构造集合传入columns参数,但列表drop_cols是不可哈希类型,直接放进集合会直接触发TypeError: unhashable type: 'list'报错。
  • 就算不触发哈希错误,这种写法会把整个drop_cols列表当成集合里的单个元素,传给drop方法的是嵌套结构,pandas无法识别为合法的列名集合,依然会抛出找不到列的错误。

另外注意:不要用集合作为columns的参数,集合是无序结构,后续排查列相关问题时会增加不必要的成本,统一传入列名列表是最稳妥的做法。

修正代码

只需要把复用的drop_cols列表和单次使用的硬编码列合并成一维的列名列表,传入参数即可,两种常用写法都可以,且都不会修改原drop_cols列表的内容,不影响你后续在notebook其他位置复用:

  1. 列表解包写法(最简洁,推荐)
    如果有2个单次使用的待删除列,直接把列名写在前面的列表里,再解包drop_cols就行:
drop_cols = ['var1', 'var2']
# 示例里除了var0,另一个单次删除列用var_tmp占位,按需替换成实际列名即可
df = df.drop(columns=['var0', 'var_tmp', *drop_cols])
  1. 列表拼接写法
    直接把硬编码列组成的列表和drop_cols做拼接,效果和解包完全一致:
drop_cols = ['var1', 'var2']
df = df.drop(columns=['var0', 'var_tmp'] + drop_cols)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:45:30