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

如何在Pandas中按子条件删除行:保留仅含Category 2的系统行

解决方案:按子条件删除Pandas数据行

核心思路

先识别出同时包含Category 1和2的系统,再排除这些系统中Category为2的行;其余情况(仅含Category 1的系统、仅含Category 2的系统)全部保留。

代码实现

方法1:分步处理(可读性更高)

import pandas as pd

# 示例数据集,替换成你的实际DataFrame即可
df = pd.DataFrame({
    'System': ['A', 'A', 'D', 'D', 'E', 'F', 'B', 'C'],
    'Category': [1, 2, 1, 2, 2, 2, 1, 1]
})

# 1. 给每行标记所属系统是否同时包含Category 1和2
df['has_both_cats'] = df.groupby('System')['Category'].transform(
    lambda x: 1 in x.values and 2 in x.values
)

# 2. 筛选符合要求的行:排除「系统同时有1和2且Category是2」的行
filtered_df = df[~(df['has_both_cats'] & (df['Category'] == 2))]

# 3. 清理临时列(可选)
filtered_df = filtered_df.drop('has_both_cats', axis=1)

方法2:一行式简化(无需临时列)

如果不想添加临时列,可以直接把判断逻辑整合到筛选条件里:

filtered_df = df[~(
    df.groupby('System')['Category'].transform(lambda x: 1 in x.values and 2 in x.values)
    & (df['Category'] == 2)
)]

效果验证

处理后的数据会保留:

  • 所有仅含Category 1的系统行(如B、C的所有行)
  • 同时含1和2的系统中Category为1的行(如A、D的Category 1行)
  • 所有仅含Category 2的系统行(如E、F的所有行)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:36:20