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文档