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

Pandas条件过滤:仅当C2大于2时移除C1中的0值

Pandas DataFrame 按指定规则过滤行

需求说明

仅当C2列的值大于2时,移除C1列中的0值,具体规则:

  • 若C2 ≤ 2,所有行全部保留
  • 若C2 > 2,仅保留C1 ≠ 0的行

错误原因分析

你之前使用的(df['C1'] != 0) & (df['C2'] > 2)或(df['C1'] > 0) & (df['C2'] > 2),只保留了C2>2且C1≠0的行,完全漏掉了C2≤2的所有行,所以结果不符合预期。

正确实现代码

首先构造目标DataFrame:

import pandas as pd

data = {
    'C1': [100, 25, 67, 0, 0, 67],
    'C2': [10, 8, 4, 4, 1, 0]
}
df = pd.DataFrame(data)

使用以下两种方式均可得到预期结果:

# 方式1:直接保留符合要求的行
filtered_df = df[(df['C2'] <= 2) | (df['C1'] != 0)]

# 方式2:排除需要移除的行(C2>2且C1=0)
filtered_df = df[~((df['C2'] > 2) & (df['C1'] == 0))]

过滤后结果

C1C2
10010
258
674
01
670

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:12:43