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

如何用一行代码按布尔条件拆分DataFrame为满足/不满足条件的两个子集?

拆分DataFrame为满足/不满足条件的两个子集

当然可以实现这种一行代码拆分的需求,核心思路是利用布尔掩码及其取反结果来分别筛选数据:

基础写法(直接在一行内完成)

假设你的条件是df['score'] >= 60,可以这样写:

df_pass, df_fail = df[df['score'] >= 60], df[~(df['score'] >= 60)]

更清晰的写法(先定义条件,再拆分)

如果条件比较复杂,先把布尔掩码单独定义,能避免重复写条件,可读性更强:

condition = df['score'] >= 60
df_pass, df_fail = df[condition], df[~condition]

使用query方法的写法

如果偏好字符串形式的条件表达式,也可以用query:

df_pass, df_fail = df.query('score >= 60'), df.query('not (score >= 60)')

注意:以上方法都会保留原DataFrame的索引,如果需要重置索引,可以在筛选后追加.reset_index(drop=True),比如:

df_pass, df_fail = df[condition].reset_index(drop=True), df[~condition].reset_index(drop=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:30:53