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

Python Pandas:按条件删除DataFrame列后得到空表问题求助

问题解决:错误删除DataFrame列导致空表

你的代码核心错误在于判断条件的写法:df_try['size_'+str(i)].all() <5 完全不符合需求逻辑。.all()方法是检查列内所有元素是否为布尔真(非0、非空等),而非判断所有元素都小于5。布尔值与5比较时,True会被转为1,False转为0,这导致该条件永远为True,循环中每次都会删除对应列,最终把DataFrame删空。

修正后的代码

调整判断逻辑,同时优化列筛选方式,让代码更通用(无需手动列所有含_A/_B/_C的列):

names = ['A', 'B', 'C']

for i in names:
    # 正确判断size_*列的所有值是否都小于5
    if (df_try[f'size_{i}'] < 5).all():
        # 自动筛选所有列名包含_{i}的列
        cols_to_drop = [col for col in df_try.columns if f'_{i}' in col]
        df_try = df_try.drop(cols_to_drop, axis=1)

额外说明

  • 用f-string替代'size_'+str(i),代码更简洁易读
  • 通过列表推导式自动匹配目标列,就算后续新增weight_A这类列也能一并处理,无需修改代码
  • 测试时可以先打印cols_to_drop,确认要删除的列是否符合预期,避免误删

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:01:10