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

列表转Pandas DataFrame后,如何高效删除指定记录及去重?

Pandas中删除指定记录与去重的正确方法

一、基于字段条件删除记录

Pandas不推荐用for循环遍历处理,直接用布尔索引或drop()方法是更高效规范的方式:

  1. 布尔索引过滤(推荐,代码更直观)
    直接保留符合条件的记录,自动剔除不符合的:
# 示例:删除"age"字段大于30的记录
df = df[df['age'] <= 30]

# 多条件过滤(注意用&表示且,|表示或,条件需加括号)
df = df[(df['age'] <= 30) & (df['city'] == 'Shanghai')]
  1. 使用drop()方法删除指定索引
    先筛选出要删除记录的索引,再批量删除:
# 示例:删除"status"字段为"invalid"的记录
df.drop(df[df['status'] == 'invalid'].index, inplace=True)

注:inplace=True表示直接在原DataFrame上修改,不加则返回新的DataFrame

二、去重操作

直接用drop_duplicates()方法,支持按指定字段去重,灵活控制保留规则:

# 按"id"字段去重,保留第一条重复记录
df = df.drop_duplicates(subset=['id'], keep='first')

# 按"id"字段去重,保留最后一条重复记录
df = df.drop_duplicates(subset=['id'], keep='last')

# 删除所有重复记录(只要重复就全删)
df = df.drop_duplicates(subset=['id'], keep=False)

# 不指定subset则按所有字段去重
df = df.drop_duplicates()

三、替代append的正确拼接方式

DF.append()已弃用,用pd.concat()时必须保证待拼接的是同结构的DataFrame,否则会出现格式混乱:

# 单条记录拼接:先将记录转为DataFrame再拼接
new_row = pd.DataFrame([{'id': 1001, 'name': 'Bob', 'age': 25}])
df = pd.concat([df, new_row], ignore_index=True)

注:ignore_index=True会重置拼接后的索引,避免索引重复问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:25:05