pandas - pandas.reorder_levels 只有一个索引
问题描述
Pandas 提供了使用 reorder_index 函数重新排序索引的功能:
pandas.DataFrame({"A" : [1, 2, 3], "B" : [4,5,6], "C" : [7,8,9]}).set_index(["A", "B"]).reorder_levels(["B", "A"])
但是它似乎不适用于单索引 DataFrames :
pandas.DataFrame({"A" : [1, 2, 3], "B" : [4,5,6]}).set_index("A").reorder_levels(["A"])
我做错了什么吗?
PS:我知道只用一个索引对索引重新排序是没有意义的,但这是一种边界效应,为了代码清晰,我通常倾向于避免不必要的 if 语句。
解决方案
执行以下操作相当于重新排序:
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6], "C": [7, 8, 9]}).set_index(["A", "B"])
print(df.reset_index().set_index(['B', 'A']))
输出
C
B A
4 1 7
5 2 8
6 3 9
它适用于单个索引:
odf = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}).set_index("A")
print(odf)
输出
B
A
1 4
2 5
3 6
推荐阅读
- ios - 带有 URLSession 的 Swift iOS -DispatchGroup 正在锁定它不位于的应用程序的其他部分
- batch-file - 嵌套 for 循环中 EnableDelayedExpansion 的语法
- php - 检查多维数组的重复项(第 3 级)
- google-analytics - 谷歌分析 (gtag) 跨域
- python - 返回函数给出无
- c# - 获取我的时区的当前日期
- swift - SKTileMapNode 未加载到正确的大小
- html - 我希望一个 div 在 z 轴上比它的兄弟姐妹更高,但它似乎不起作用
- python - 如何计算 np 数组中出现了多少个数组?
- javascript - 添加一个类不是使用 ClassList.add 列出集合