Panda drop_duplicates() 函数语法
Pandas drop_duplicates() 函数从 DataFrame 中删除重复行,其语法是:
1drop_duplicates(self, subset=None, keep="first", inplace=False)
- subset:列标签或标签序列要考虑识别重复的行。默认情况下,所有列都用于查找重复的行
- keep:允许值为 {'first', 'last', False},默认值为 'first'. 如果 'first',除第一个外,重复的行被删除。如果 'last',重复的行除最后一个被删除。如果 False,所有重复的行被删除
- inplace:如果 True,则源数据框被更改,没有返回。默认情况下,源数据框保持不变,然后返回新的数据框
Pandas Drop Duplicate Rows 例子
让我们看看从 DataFrame 对象中放下重复行的一些例子。
1. 放下重复列保持第一个
这是没有通过论点时的默认行为。
1import pandas as pd
2
3d1 = {'A': [1, 1, 1, 2], 'B': [2, 2, 2, 3], 'C': [3, 3, 4, 5]}
4
5source_df = pd.DataFrame(d1)
6print('Source DataFrame:\n', source_df)
7
8# keep first duplicate row
9result_df = source_df.drop_duplicates()
10print('Result DataFrame:\n', result_df)
输出:
1Source DataFrame:
2 A B C
30 1 2 3
41 1 2 3
52 1 2 4
63 2 3 5
7Result DataFrame:
8 A B C
90 1 2 3
102 1 2 4
113 2 3 5
源 DataFrame 行 0 和 1 是重复组件. 保留第一个发生,删除其余的重复组件。
2、放下重复并保持最后一行
1result_df = source_df.drop_duplicates(keep='last')
2print('Result DataFrame:\n', result_df)
输出:
1Result DataFrame:
2 A B C
31 1 2 3
42 1 2 4
53 2 3 5
索引0
被删除,最后一个重复的行1
被保留在输出中。
删除从 DataFrame 的所有重复行
1result_df = source_df.drop_duplicates(keep=False)
2print('Result DataFrame:\n', result_df)
输出:
1Result DataFrame:
2 A B C
32 1 2 4
43 2 3 5
两个重复的行0
和1
都从结果数据框中掉落。
4. 根据特定列确定重复的行
1import pandas as pd
2
3d1 = {'A': [1, 1, 1, 2], 'B': [2, 2, 2, 3], 'C': [3, 3, 4, 5]}
4
5source_df = pd.DataFrame(d1)
6print('Source DataFrame:\n', source_df)
7
8result_df = source_df.drop_duplicates(subset=['A', 'B'])
9print('Result DataFrame:\n', result_df)
输出:
1Source DataFrame:
2 A B C
30 1 2 3
41 1 2 3
52 1 2 4
63 2 3 5
7Result DataFrame:
8 A B C
90 1 2 3
103 2 3 5
A
和B
列用于识别重复的行,因此,0、1和2行是重复的行,因此,1和2行从输出中删除。
5、将双重线路移除
1source_df.drop_duplicates(inplace=True)
2print(source_df)
输出:
1A B C
20 1 2 3
32 1 2 4
43 2 3 5