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

如何基于DataFrame列的完全匹配与部分匹配删除行?(Python3+)

基于多条件删除DataFrame行的实现方法

要实现删除Name列完全匹配Blue或Green,且Description列包含abc的行,可以用pandas的布尔索引或drop()方法完成,以下是具体实现:

步骤1:导入库并创建示例数据

import pandas as pd

# 构造示例DataFrame
data = {
    'Name': ['Blue', 'Red', 'Green', 'Yellow', 'Blue'],
    'Description': ['contains abc', 'random text', 'abc here', 'no match', 'def only'],
    'Value': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)

步骤2:定义过滤条件并处理

方法1:布尔索引保留目标行

直接通过取反操作,排除同时满足两个条件的行:

# 条件1:Name列是Blue或Green
cond1 = df['Name'].isin(['Blue', 'Green'])
# 条件2:Description列包含abc(na=False处理空值)
cond2 = df['Description'].str.contains('abc', na=False)

# 保留不同时满足两个条件的行
filtered_df = df[~(cond1 & cond2)]

方法2:使用drop()删除目标行

先定位符合删除条件的行索引,再执行删除:

# 获取需删除行的索引
drop_indices = df[(cond1 & cond2)].index
# 删除指定索引的行
filtered_df = df.drop(drop_indices)

验证结果

运行以下代码查看原数据和过滤后的数据:

print("原DataFrame:")
print(df)
print("\n过滤后的DataFrame:")
print(filtered_df)

输出结果会自动移除Name为Blue且Description含abc、Name为Green且Description含abc的两行。

额外注意事项

  • 如果Description列存在非字符串类型数据,需先转换为字符串:df['Description'] = df['Description'].astype(str)
  • 若需要忽略大小写匹配,给str.contains()添加case=False参数:df['Description'].str.contains('abc', na=False, case=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:55:16