在Python Pandas中跨多个列删除所有重复行
在Python Pandas中跨多个列删除所有重复行
对于使数据框架唯一的工作,pandas 的 drop_duplicates
函数非常好。我想删除在一部分列上重复的所有行。这个可能吗?
A B C 0 foo 0 A 1 foo 1 A 2 foo 1 B 3 bar 1 A
例如,我想删除在列 A
和 C
上匹配的行,因此应该删除行 0 和 1。
admin 更改状态以发布 2023年5月23日
仅仅想在Ben回答 drop_duplicates 时增加一点:
keep
:{‘first’,‘last’,False},默认为‘first’
-
first:除第一个出现的副本外,删除所有副本。
-
last:除了最后一个出现的副本之外删除所有副本。
-
False:删除所有重复项。 strong>
因此,将keep
设置为False将为您提供所需的答案。
DataFrame.drop_duplicates(* args,** kwargs) 返回已删除重复行的DataFrame,选择性地仅考虑某些列
参数:subset:列标签或标签序列,可选仅考虑某些列来标识重复项,默认情况下使用所有列keep:{‘first’,‘last’,False},默认为‘first’ first:除第一个出现的副本外,删除所有副本。last:除了最后一个出现的副本之外删除所有副本。False:重复物品全部删除。take_last:不推荐使用inplace:布尔值,默认值为False,无论是在原地删除重复项还是返回副本cols:kwargs只有子集的一个参数[不推荐]返回值:去重:DataFrame
现在使用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)