Pandas删除重复行完全指南:drop_duplicates()函数详解与实例

Pandas drop_duplicates() 函数语法

Pandas的drop_duplicates()函数从DataFrame中删除重复的行。其语法如下:

drop_duplicates(self, subset=None, keep="first", inplace=False)
  • subset:用于识别重复行的列标签或标签序列。默认情况下,所有列都用于查找重复行。
  • keep:允许值为{‘first’, ‘last’, False},默认为’first’。如果为’first’,则删除除第一次出现的重复行外的所有重复行。如果为’last’,则删除除最后一次出现的重复行外的所有重复行。如果为False,则删除所有重复行。
  • inplace:如果为True,则修改源DataFrame并返回None。默认情况下,源DataFrame保持不变,并返回一个新的DataFrame实例。

Pandas删除重复行示例

让我们看一些从DataFrame对象中删除重复行的例子。

保留第一个,删除重复的行

当没有传递任何参数时,这是默认行为。

import pandas as pd

d1 = {'A': [1, 1, 1, 2], 'B': [2, 2, 2, 3], 'C': [3, 3, 4, 5]}

source_df = pd.DataFrame(d1)
print('源DataFrame:\n', source_df)

# 保留第一个重复行
result_df = source_df.drop_duplicates()
print('结果DataFrame:\n', result_df)

输出:

源DataFrame:
    A  B  C
0  1  2  3
1  1  2  3
2  1  2  4
3  2  3  5
结果DataFrame:
    A  B  C
0  1  2  3
2  1  2  4
3  2  3  5

源DataFrame的第0行和第1行是重复的。保留第一次出现的重复行,删除其余的重复行。

2. 删除重复数据并保留最后一行

result_df = source_df.drop_duplicates(keep='last')
print('结果DataFrame:\n', result_df)

输出:

结果DataFrame:
    A  B  C
1  1  2  3
2  1  2  4
3  2  3  5

在输出中删除索引”0″,并保留最后一个重复行”1″。

3. 从DataFrame中删除所有重复的行

result_df = source_df.drop_duplicates(keep=False)
print('结果DataFrame:\n', result_df)

输出:

结果DataFrame:
    A  B  C
2  1  2  4
3  2  3  5

在结果DataFrame中,重复的行’0’和’1’都被删除了。

4. 根据特定的列识别重复的行

import pandas as pd

d1 = {'A': [1, 1, 1, 2], 'B': [2, 2, 2, 3], 'C': [3, 3, 4, 5]}

source_df = pd.DataFrame(d1)
print('源DataFrame:\n', source_df)

result_df = source_df.drop_duplicates(subset=['A', 'B'])
print('结果DataFrame:\n', result_df)

输出结果:

源DataFrame:
    A  B  C
0  1  2  3
1  1  2  3
2  1  2  4
3  2  3  5
结果DataFrame:
    A  B  C
0  1  2  3
3  2  3  5

列”A”和”B”用于识别重复行。因此,行0、1和2是重复的。因此,行1和2被从输出中去除。

5. 去除重复行并在原地进行处理

source_df.drop_duplicates(inplace=True)
print(source_df)

输出:

   A  B  C
0  1  2  3
2  1  2  4
3  2  3  5

参考文献

  • Python Pandas模块教程
  • Pandas DataFrame drop_duplicates() API文档
bannerAds