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

Python列表推导式筛选DataFrame指定后缀列报错解决

报错原因

你的DataFrame列名是整数、字符串混合类型:前半部分列名是整数格式,后半部分带_R后缀的是字符串格式。执行'_R' in i判断时,遍历到整数类型的列名就会触发报错——in成员判断要求右侧对象是可迭代类型,整数不支持迭代,因此抛出TypeError: argument of type 'int' is not iterable。

可行实现方案
  • 方案1:修改列表推导逻辑,判断前先把列名转为字符串,兼容所有类型的列名,不会修改原始列名类型
# 筛选出所有转字符串后包含_R的列
r_columns = [col for col in df.columns if '_R' in str(col)]
# 提取目标列生成新DataFrame
df_r = df[r_columns]
  • 方案2:用pandas内置的字符串方法做筛选,写法更简洁,自动规避类型错误,不会修改原始列名类型
# 临时把列名转为字符串做匹配,na=False表示非字符串值直接判定为不匹配
df_r = df.loc[:, df.columns.astype(str).str.contains('_R', na=False)]
  • 方案3:如果后续也需要统一列名格式,可以先把所有列名转为字符串,再用filter方法快速筛选
# 将所有列名统一转为字符串类型(会修改原始DataFrame的列名类型)
df.columns = df.columns.astype(str)
# 直接筛选列名包含_R的列
df_r = df.filter(like='_R')

以上方法都不会修改列对应的数值内容,仅做列名层面的筛选判断,可以根据自己的代码习惯选择。

内容的提问来源于stack exchange,提问作者Divyansh Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:39:57