Pandas 是一种用于数据操作和分析的强大 Python 库。在数据分析的过程中,经常会遇到需要删除重复数据的情况。而 Pandas 提供了两种方法来删除重复行,即 df.drop_duplicates()
和 df.duplicated()
。下面分别进行详细讲解:
df.drop_duplicates()
df.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
该方法主要用于删除 DataFrame 中的重复行。其中各参数的含义如下:
subset
:可选,用于指定列名或列名列表,表示要检查重复行的子集。如果此参数未指定,则默认检查所有列。keep
:可选,用于指定保留哪一个副本。当取值为 'first' 时,保留第一个副本;当取值为 'last' 时,保留最后一个副本;当取值为 False 时,删除所有副本。inplace
:可选,用于指定是否在原地修改数据,即修改 DataFrame 本身还是生成一个新的 DataFrame。默认为 False,生成新的 DataFrame。ignore_index
:可选,用于指定删除重复行后是否重新生成索引。默认为 False,保留原有索引。
示例代码:
import pandas as pd
# 创建有重复行的 DataFrame
data = {'name': ['Tom', 'Mary', 'Tom', 'John'], 'age': [20, 21, 20, 19]}
df = pd.DataFrame(data)
print("原 DataFrame:")
print(df)
# 删除重复行
df = df.drop_duplicates()
print("\n删除重复行后的 DataFrame:")
print(df)
输出结果:
原 DataFrame:
name age
0 Tom 20
1 Mary 21
2 Tom 20
3 John 19
删除重复行后的 DataFrame:
name age
0 Tom 20
1 Mary 21
3 John 19
从输出结果可以看出,重复的第二行已经被删除掉了。
df.duplicated()
df.duplicated(subset=None, keep='first')
该方法主要用于判断 DataFrame 中的每行是否重复。与 df.drop_duplicates()
方法不同的是,df.duplicated()
方法不会删除任何行,而只是返回一个布尔数组,表示每行是否是重复的。其中各参数的含义与 df.drop_duplicates()
相同。
示例代码:
import pandas as pd
# 创建有重复行的 DataFrame
data = {'name': ['Tom', 'Mary', 'Tom', 'John'], 'age': [20, 21, 20, 19]}
df = pd.DataFrame(data)
print("原 DataFrame:")
print(df)
# 判断每行是否重复
is_duplicated = df.duplicated()
print("\n每行是否重复:")
print(is_duplicated)
输出结果:
原 DataFrame:
name age
0 Tom 20
1 Mary 21
2 Tom 20
3 John 19
每行是否重复:
0 False
1 False
2 True
3 False
dtype: bool
从输出结果可以看出,第二行和第三行被标记为重复,即第二行是重复行,而第三行是重复行之一。
综上,df.drop_duplicates()
方法可以直接删除重复行,而 df.duplicated()
方法则需要结合其他方法使用,如 ~df.duplicated()
可以获取没有重复行的 DataFrame。在实际场景中,可以根据具体需要选择使用哪一种方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:pandas重复行删除操作df.drop_duplicates和df.duplicated的区别 - Python技术站