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
相关产品推荐
相关产品推荐

