我找不到从第A
列和第B
列中选择唯一行的任何优雅方法,但没有联合起来,也没有按顺序进行。这是为了保持这两列中唯一值的“包含”交集。
我的目标是在A
和B
列中保留尽可能多的唯一值。这些列被共同考虑,但我正在寻找它们值的所有独特“组合” ...
示例数据框
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
,以后可以使用列drop_duplicates
上的B
删除,但是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
因此,我的目的是在A
和B
列中保留尽可能多的唯一值。这些列被共同考虑,但我正在寻找它们值的所有独特“组合” ...
答案 0 :(得分:-1)
尝试以下代码:
df1.drop_duplicates( subset=[ "A" and "B"], keep="first", inplace=False, )
输出:
A B
0 A1 B1
2 A2 B2
3 A3 B3