在Python Pandas中跨多个列删除所有重复行

30 浏览
0 Comments

在Python Pandas中跨多个列删除所有重复行

对于使数据框架唯一的工作,pandas 的 drop_duplicates 函数非常好。我想删除在一部分列上重复的所有行。这个可能吗?

    A   B   C
0   foo 0   A
1   foo 1   A
2   foo 1   B
3   bar 1   A

例如,我想删除在列 AC 上匹配的行,因此应该删除行 0 和 1。

admin 更改状态以发布 2023年5月23日
0
0 Comments

仅仅想在Ben回答 drop_duplicates 时增加一点:

keep :{‘first’,‘last’,False},默认为‘first’

  • first:除第一个出现的副本外,删除所有副本。

  • last:除了最后一个出现的副本之外删除所有副本。

  • False:删除所有重复项。

因此,将keep设置为False将为您提供所需的答案。

DataFrame.drop_duplicates(* args,** kwargs) 返回已删除重复行的DataFrame,选择性地仅考虑某些列

参数:subset:列标签或标签序列,可选仅考虑某些列来标识重复项,默认情况下使用所有列keep:{‘first’,‘last’,False},默认为‘first’ first:除第一个出现的副本外,删除所有副本。last:除了最后一个出现的副本之外删除所有副本。False:重复物品全部删除。take_last:不推荐使用inplace:布尔值,默认值为False,无论是在原地删除重复项还是返回副本cols:kwargs只有子集的一个参数[不推荐]返回值:去重:DataFrame

0
0 Comments

现在使用pandas.DataFrame.drop_duplicates和keep参数在pandas中更加容易。

import pandas as pd
df = pd.DataFrame({"A":["foo", "foo", "foo", "bar"], "B":[0,1,1,1], "C":["A","A","B","A"]})
df.drop_duplicates(subset=['A', 'C'], keep=False)

0