首页 > 解决方案 > 使用 MultiIndex 删除 DataFrame 中的对称对

问题描述

我有pd.DataFrame以下形式,第 0 列中的数值不一定不同:

>>> idx = pd.MultiIndex.from_arrays([["a", "a", "b", "b", "c", "c"], ["b", "c", "a", "c", "a", "b"]])
>>> df = pd.DataFrame(list(range(6)), index=idx)
     0
a b  0
  c  1
b a  2
  c  3
c a  4
  b  5

我想剔除第一次出现的 2 个索引级别的唯一组合以获得如下结果:

     0
a b  0
  c  1
b c  3

在这种情况下使用pandas0.23.4 和 Python 3.6.5。

标签: pythonpandas

解决方案


我认为您可以使用Index.duplicated转换为frozensets的索引值,然后过滤boolean indexing

df = df[~df.index.map(frozenset).duplicated()]
print (df)
     0
a b  0
  c  1
b c  3

推荐阅读