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

如何删除Pandas DataFrame中列名含'PM'的列及解决相关报错

问题原因与解决方案

报错解读

  • 核心逻辑错误:你需要判断的是列名是否包含PM,但你写的df.iloc[0,j]实际取的是第0行第j列的单元格值,不是列名。
  • pandas的数值类型列底层默认用numpy数组存储,你取出的这个单元格值是numpy.float64类型,该类型没有str属性,调用.str.contains自然会抛出AttributeError,这就是报错提到numpy的原因。
  • 额外的语法/逻辑问题:
    • 判断语句前缺少if关键字,语法不合法
    • 循环遍历列索引的同时删除列,会导致后续列索引错位,出现删错列的问题

正确实现方式

方案1:直接筛选保留不含PM的列(最简洁)

df = df.loc[:, ~df.columns.str.contains('PM')]

解释:df.columns.str.contains('PM')会对所有列名做匹配,返回布尔数组,列名含PM的位置为True;~是取反运算符,最终筛选出所有列名不含PM的列。

方案2:先提取待删除列再调用drop

# 提取所有列名含PM的列
pm_cols = df.columns[df.columns.str.contains('PM')].tolist()
# 直接删除对应列
df.drop(columns=pm_cols, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:36:03