Pandas 删除重复行 - drop_duplicates() 函数

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

两个重复的行01都从结果数据框中掉落。

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

AB列用于识别重复的行,因此,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

参考

Published At
Categories with 技术
Tagged with
comments powered by Disqus