如何比较pandas中的两个列值



我有一个数据框架,其中两个列中有一些唯一的id。例如

S.no. Column1 Column2
1  00001x  00002x
2  00003j  00005k
3  00002x  00001x
4  00004d  00008e

Value可以是字符串格式的任意值我想比较这两列,让s。no。1和s。no。3的数据保留下来。因为这些id包含相同的信息。只是顺序不同。

基本上,如果列1中的一行值为X,列2为Y,列1中的另一行值为Y,列2中的另一行值为X,则只应保留一行。

在python中可能吗?

您可以将列转换为每行的frozenset

这将给出应用duplicated的共同命令。

最后,使用前面的输出作为掩码对行进行切片:

mask = df.filter(like='Column').apply(frozenset, axis=1).duplicated()
df[~mask]

以前的答案使用set:

mask = df.filter(like='Column').apply(lambda x: tuple(set(x)), axis=1).duplicated()
df[~mask]

NB。使用set或sorted需要转换为元组(lambda x: tuple(sorted(x))),因为duplicated函数对值进行散列,这对于可变对象

是不可能的。输出:

S.no. Column1 Column2
0      1  00001x  00002x
1      2  00003j  00005k
3      4  00004d  00008e

相关内容

  • 没有找到相关文章

最新更新