【问题标题】:Remove a row in Python Dataframe if there are repeating values in different columns如果不同列中有重复值,则删除 Python Dataframe 中的一行
【发布时间】:2022-11-10 00:15:37
【问题描述】:
这可能是一个非常简单的问题,但我无法正确处理它,也没有在这里找到确切的答案。因此,假设我们有一个 Python 数据框,如下所示:
东风:
ID a b c d
0 1 3 4 9
1 2 8 8 3
2 1 3 10 12
3 0 1 3 0
我想删除所有在不同列中包含重复值的行。换句话说,我只对保留具有唯一值的行感兴趣。参考上面的例子,期望的输出应该是:
ID a b c d
0 1 3 4 9
2 1 3 10 12
(我没有故意更改 ID 值以使比较更容易)。如果您有任何想法,请告诉我。谢谢!
【问题讨论】:
标签:
python
pandas
database
dataframe
duplicates
【解决方案1】:
您可以将sets 的length 与列名称的长度进行比较:
lc = len(df.columns)
df1 = df[df.apply(lambda x: len(set(x)) == lc, axis=1)]
print (df1)
a b c d
ID
0 1 3 4 9
2 1 3 10 12
或通过Series.duplicated 和Series.any 进行测试:
df1 = df[~df.apply(lambda x: x.duplicated().any(), axis=1)]
或DataFrame.nunique:
df1 = df[df.nunique(axis=1).eq(lc)]
或者:
df1 = df[[len(set(x)) == lc for x in df.to_numpy()]]