python - 使用 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
在这种情况下使用pandas
0.23.4 和 Python 3.6.5。
解决方案
我认为您可以使用Index.duplicated
转换为frozensets的索引值,然后过滤boolean indexing
:
df = df[~df.index.map(frozenset).duplicated()]
print (df)
0
a b 0
c 1
b c 3
推荐阅读
- angular - 如何使用 ASP.NET CORE web api 从 Angular 6 发送电子邮件?
- css - 如何使用 flexbox 和 css 垂直排列元素
- html - Bootstrap 列在 IE11 (Flex) 中不起作用
- c# - 拖放 - GetData() 返回 null
- wso2 - 在 wso2 中使用 scim2 创建具有扩展声明的用户
- asp.net - ConfigurationManager 无法识别我的连接字符串
- javascript - 如何在 React Material UI TextField 中居中占位符和文本
- python-3.x - WinError 2 系统找不到Image进程中指定的文件
- python - 没有 JS 经验--Bokeh Simple JSCallback 用 Select 值更新图形
- c# - 列表框字符串根据时间变化