pandas根据某列去重

pandas根据某列去重

drop_duplicates(subset=[‘comment’], keep=‘first’, inplace=True)

参数:

  • subset: 列表的形式填写要进行去重的列名,默认为 None ,表示根据所有列进行。
  • keep: 可选参数有三个:firstlastFalse, 默认值 first。其中,
    (1)first 表示: 保留第一次出现的重复行,删除后面的重复行。
    (2)last 表示: 删除重复项,保留最后一次出现。
    (3)False 表示: 删除所有重复项。
  • inplace:默认为 False ,删除重复项后返回副本。True,直接在原数据上删除重复项。

✪ 栗子 ✪
首先创建一个 DataFrame

import pandas as pd
dic = {'name':['a', 'b', 'c', 'd'], 'comment':['abc', '真棒', '真棒', '123']}
df = pd.DataFrame(dic)
df

在这里插入图片描述

使用 drop_duplicates 去除重复值,如果不指明 subset ,那么默认根据所有列来考虑,即当某两行数据所有列都重复时进行去重。

df.drop_duplicates(keep='first', inplace=True)

在这里插入图片描述
subset默认为None,根据所有列考虑,1,2行虽然comment相同,但name不相同,故保留,使用时根据具体情况进行选择。


现在设置 subsetcomment 即可删除该列重复值。

df.drop_duplicates(subset=['comment'], keep='first', inplace=True)

在这里插入图片描述

注意:此时索引没有重置,如有需要可使用 reset_index() 重置索引。

df.reset_index(drop=True, inplace=True)

在这里插入图片描述


对于刚入门 Python 或是想要入门 Python 的小伙伴,可以通过下方小卡片联系作者,一起交流学习,都是从新手走过来的,有时候一个简单的问题卡很久,但可能别人的一点拨就会恍然大悟,由衷的希望大家能够共同进步。另外还有本人整理的近千套模板,百本优质电子书资源,等你领取!

👇🏻 关注小卡片,一起学习Python,领取资料👇🏻
<think>嗯,用户想了解Pandas中对一列的方法。首先,我需要确定用户的具体需求是什么。他们可能有一列数据,里面有复的值,想要找出唯一值或者删除复项。Pandas里常用的方法应该是unique()和drop_duplicates(),这两个函数有什么区别呢? unique()返回的是唯一值的数组,而drop_duplicates()则是返回后的DataFrame或者Series。可能用户需要的是保留数据框架的结构,或者只是单纯获取唯一值表。需要明确这两个方法的不同应用场景。 另外,用户提到的是一列数据,所以可能是在处理Series对象。这时候,如果是Series的话,drop_duplicates()同样适用,但需要说明inplace参数的使用,或者是否需要赋值回原变量。比如,是否希望修改原数据还是生成一个副本。 还有可能用户对保持顺序有要求,drop_duplicates()默认保留第一个出现的值,而是否要保留最后一个,可以用keep参数。例如,keep='last'的话,就会保留最后一个复项,删除之前的。这点是否需要提及? 还可能有一些进阶用法,比如根据,但用户只提到一列,可能不需要涉及。但为了全面性,可以稍微带过,但点放在单处理上。 另外,需要给出示例代码,这样用户更容易理解。比如创建一个包含复值的DataFrame,然后展示如何对某一列应用方法。例如,使用df['column'].unique()得到唯一值数组,或者使用df.drop_duplicates(subset=['column'])来删除该复的行。 还需要注意,drop_duplicates()默认是针对所有的,如果只针对某一列,必须用subset参数指定,否则可能会误删其他不同的行。这一点很要,容易出错,需要强调。 最后,可能用户在实际应用中遇到性能问题,或者处理大数据时的注意事项,但可能暂时不需要深入,保持回答简洁即可。总结的话,分步骤解释两种方法,给出示例,说明区别和适用情况,应该能满足用户的需求。</think>在 Pandas 中,对一列数据进行通常使用以下两种方法,具体取决于需求: --- ### 1. **提取唯一值(不修改原数据)** 使用 `unique()` 方法,直接返回该的唯一值数组(`numpy.ndarray`): ```python import pandas as pd # 示例数据 data = {'A': [1, 2, 2, 3, 3, 3]} df = pd.DataFrame(data) # 获取'A'的唯一值 unique_values = df['A'].unique() print(unique_values) # 输出: [1 2 3] ``` --- ### 2. **删除复行(基于某)** 使用 `drop_duplicates()` 方法,直接删除某复值对应的行,返回新 DataFrame(默认保留第一个出现的值): ```python # 删除'A'复的行,保留第一个 df_deduplicated = df.drop_duplicates(subset=['A']) # 结果: # A # 0 1 # 1 2 # 3 3 ``` #### 参数说明: - `subset=['名']`:指定(必填)。 - `keep='first'/'last'/False`: - `first`(默认):保留第一个出现的复行。 - `last`:保留最后一个。 - `False`:删除所有复行(仅保留唯一行)。 - `inplace=True`:直接修改原 DataFrame,不返回新对象。 --- ### 区别总结: | 方法 | 用途 | 返回类型 | 是否修改原数据 | |--| | `unique()` | 获取唯一值表 | numpy数组 | 否 | | `drop_duplicates()`| 删除复行,保留唯一行 | DataFrame 或 Series | 默认否 | 根据需求选择合适的方法即可!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream丶Killer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值