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

时间:2020-02-23 14:42:07  来源:igfitidea点击:

Pandas drop_duplicates()函数语法

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

drop_duplicates(self, subset=None, keep="first", inplace=False)
  • 子集:考虑用于识别重复行的列标签或者标签序列。
    默认情况下,所有列均用于查找重复的行。

  • 保留:允许的值为{" first"," last",False),默认为" first"。
    如果为"第一",则删除除第一行以外的重复行。
    如果为"最后",则删除除最后一行以外的重复行。
    如果为False,则删除所有重复的行。

  • inplace:如果为True,则更改源DataFrame并返回None。
    默认情况下,源DataFrame保持不变,并返回一个新的DataFrame实例。

Pandas 掉落重复行示例

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

1.删除重复的行以保持第一个

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

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('Source DataFrame:\n', source_df)

# keep first duplicate row
result_df = source_df.drop_duplicates()
print('Result DataFrame:\n', result_df)

输出:

Source DataFrame:
  A  B  C
0  1  2  3
1  1  2  3
2  1  2  4
3  2  3  5
Result 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('Result DataFrame:\n', result_df)

输出:

Result 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('Result DataFrame:\n', result_df)

输出:

Result DataFrame:
  A  B  C
2  1  2  4
3  2  3  5

重复的行" 0"和" 1"都从结果DataFrame中删除。

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('Source DataFrame:\n', source_df)

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

输出:

Source DataFrame:
  A  B  C
0  1  2  3
1  1  2  3
2  1  2  4
3  2  3  5
Result 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