pandas 包括两列中的唯一值
pandas inclusive unique values from two columns
我找不到任何优雅的方法来 select 来自列 A
和列 B
的唯一行,但不是联合且不按顺序。这是为了保持这两列中唯一值的 "inclusive" 交集。
我的目标是在 A
和 B
列中保留尽可能多的唯一值。这些列是联合考虑的,但我正在寻找它们值的所有唯一 "combinations"...
示例数据框
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
所以我的目标是在 A
和 B
列中保留尽可能多的唯一值。这些列是联合考虑的,但我正在寻找它们值的所有唯一 "combinations"...
试试下面的代码:
df1.drop_duplicates( subset=[ "A" and "B"], keep="first", inplace=False, )
输出:
A B
0 A1 B1
2 A2 B2
3 A3 B3
我找不到任何优雅的方法来 select 来自列 A
和列 B
的唯一行,但不是联合且不按顺序。这是为了保持这两列中唯一值的 "inclusive" 交集。
我的目标是在 A
和 B
列中保留尽可能多的唯一值。这些列是联合考虑的,但我正在寻找它们值的所有唯一 "combinations"...
示例数据框
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
所以我的目标是在 A
和 B
列中保留尽可能多的唯一值。这些列是联合考虑的,但我正在寻找它们值的所有唯一 "combinations"...
试试下面的代码:
df1.drop_duplicates( subset=[ "A" and "B"], keep="first", inplace=False, )
输出:
A B
0 A1 B1
2 A2 B2
3 A3 B3