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

如何在Pandas数据框中筛选指定列均不含Y的剩余行?

问题原因及解决方法

你的代码确实引发了内存问题,根源是语法错误:
在(df[df['column3'] != 'Y'])和(df[df['column4'] != 'Y'])这两处,你多嵌套了一层df[]。正确写法应该和前两列一致,直接用df['column3'] != 'Y'——这会返回一个与原DataFrame行数匹配的布尔序列,用于过滤行。

而错误写法返回的是整个子DataFrame,当它和前面的布尔序列做&运算时,pandas会触发广播机制,试图将布尔序列与DataFrame的每一列做运算,生成一个形状为(1855862, 1724897)的超大数组,这就是为什么会出现需要23.3TiB内存的离谱需求。

正确代码写法

写法一(修正语法错误)

none_of_the_things = df[(df['column1'] != 'Y') & (df['column2'] != 'Y') & (df['column3'] != 'Y') & (df['column4'] != 'Y')]

写法二(更简洁高效)

用eq判断是否等于Y,any(axis=1)检查每行是否存在至少一个Y,取反后就是所有列都不含Y的行:

none_of_the_things = df[~df[['column1', 'column2', 'column3', 'column4']].eq('Y').any(axis=1)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:04:53