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

Pandas如何不区分大小写删除DataFrame中的重复行

Pandas 不区分大小写删除单列重复记录实现方案

你可以通过「统一字符串大小写作为去重判断键,保留原始字符串值」的思路实现需求,不需要修改原列的实际内容。


方法1:drop_duplicates 实现(最简洁易读)

首先构造测试数据:

import pandas as pd

df = pd.DataFrame({'Col': ['Appliance Identification', 'Natural Language','Social networks',
                           'natural language', 'Personal robot', 'Social Networks', 'Natural language']})

核心操作是新增一个临时列,把原列值全部转为小写(或大写),按这个临时列去重后删掉临时列即可,你可以通过keep参数控制保留重复组中的哪条记录:

  • 保留每个重复组第一次出现的原始值:
df["temp_lower"] = df["Col"].str.lower()
df = df.drop_duplicates(subset="temp_lower", keep="first").drop(columns="temp_lower").reset_index(drop=True)

运行结果:

Col
0  Appliance Identification
1           Natural Language
2             Social networks
3              Personal robot
  • 保留每个重复组最后一次出现的原始值:
df["temp_lower"] = df["Col"].str.lower()
df = df.drop_duplicates(subset="temp_lower", keep="last").drop(columns="temp_lower").reset_index(drop=True)

运行结果:

Col
0  Appliance Identification
1              Personal robot
2             Social Networks
3             Natural language

你给出的示例期望中Social networks为首次出现的写法、Natural language为末次出现的写法,属于自定义保留规则,只需要在去重后按需求调整对应值即可,核心去重逻辑不变。


方法2:groupby 实现(适合自定义规则场景)

如果你需要更灵活的保留规则(比如取重复组中长度最短/最长的字符串),可以用分组聚合实现,比如保留首次出现记录的写法:

df = df.groupby(df["Col"].str.lower(), as_index=False).first().reset_index(drop=True)

如果要保留末次出现的记录,把.first()替换为.last()即可。


注意事项

  • 如果列中存在非字符串类型的值,先调用.astype(str)做类型转换,避免str.lower()报错
  • 如果不需要重置连续行号,可以去掉代码末尾的.reset_index(drop=True),会保留原始数据的行索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.14 16:15:48