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

Python DataFrame行筛选:保留Total列为0或'-'的所有行

解决pandas DataFrame筛选'Total'列值为0或'-'的重复行问题

核心实现思路

直接通过布尔索引一次性筛选符合条件的行,避免多次拼接操作导致的重复。同时需要关注列的数据类型,确保条件匹配准确。

分场景解决方案

场景1:'Total'列为字符串类型(值为'0'或'-')

如果'Total'列存储的是字符串(比如从CSV读取时默认按字符串解析),用isin()方法直接匹配目标值:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'Total': ['0', '-', '100', '0', '-', '50']})

# 筛选符合条件的行
filtered_df = df[df['Total'].isin(['0', '-'])]

场景2:'Total'列为混合类型(存在数值0和字符串'-')

如果列内同时存在数值型的0和字符串'-',需要分别匹配两种类型的值:

filtered_df = df[(df['Total'] == 0) | (df['Total'] == '-')]

或者统一转换为字符串后再筛选,规避类型不匹配的问题:

filtered_df = df[df['Total'].astype(str).isin(['0', '-'])]

解决重复行问题

如果筛选后仍存在重复行,大概率是原数据本身包含重复记录,可在筛选后添加drop_duplicates()去重:

filtered_df = df[(df['Total'] == 0) | (df['Total'] == '-')].drop_duplicates()

重复行问题的常见诱因

  • 多次使用df.append()或pd.concat()拼接筛选结果,导致同一批数据被重复添加
  • 筛选条件逻辑错误(比如重复执行筛选并赋值给同一个变量)
  • 原DataFrame本身就包含重复行,未提前做去重处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:30:41