繁体   English   中英

大熊猫包含两列的唯一值

[英]pandas inclusive unique values from two columns

我找不到从A列和B列中选择唯一行的任何优雅方法,但不能联合使用,也不能按顺序进行。 这是为了保持这两列唯一值的“包含”交集。

我的目标是在AB列中保留尽可能多的唯一值。 这些列被共同考虑,但是我正在寻找它们值的所有独特“组合” ...

样本数据框

df1 = pd.DataFrame({"A": [ "A1", "A2", "A2", "A3", "A3", ],
                    "B": [ "B1", "B1", "B2", "B3", "B1", ], },
                   index=[ 0, 1, 2, 3, 4, ])

结果:

    A   B
0  A1  B1
1  A2  B1
2  A2  B2
3  A3  B3
4  A3  B1

这没有什么用处...

df2 = df1.drop_duplicates( subset=[ "A", "B", ], keep="first", inplace=False, )

结果:

    A   B
0  A1  B1
1  A2  B1
2  A2  B2
3  A3  B3
4  A3  B1

下面的代码留下了重复的B1 ,以后可以使用B列上的drop_duplicates删除它,但是随后A2也将被删除,并且如果它与B2一起存在于行中,则可以将其保留,因为它位于原始index=2处数据框。

df3 = df1.drop_duplicates( subset=[ "A", ], keep="first", inplace=False, )

结果:

    A   B
0  A1  B1
1  A2  B1
3  A3  B3

如上所述, A2已删除,但是有一个选项可以保留它,如果它与B2一起存在于一行中,就像它在原始数据帧的index=2处一样。

df4 = df3.drop_duplicates( subset=[ "B", ], keep="first", inplace=False, )

    A   B
0  A1  B1
3  A3  B3

所需结果:

    A   B
0  A1  B1
1  A2  B2
2  A3  B3

因此,我的目标是在AB列中保留尽可能多的唯一值。 这些列被共同考虑,但是我正在寻找它们值的所有独特“组合” ...

尝试以下代码:

df1.drop_duplicates( subset=[ "A" and "B"], keep="first", inplace=False, )

输出:

    A   B
0   A1  B1
2   A2  B2
3   A3  B3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM