python - Pandas MultiIndex DataFrame 排序
问题描述
我正在寻找一种方法来对具有多个索引级别的 DataFrame 中的列进行排序。在我的 DataFrame 索引级别 0 是州名称(“STNAME”),索引级别 1 是城市名称(“CTYNAME”)。
我的初始 DataFrame 如下所示:
在:
df = census_df
df = df.set_index(["STNAME" ,"CTYNAME"])
df = df.loc[: ,["CENSUS2010POP"]]
print(df.head())
出去:
CENSUS2010POP
STNAME CTYNAME
Alabama Alabama 4779736
Autauga County 54571
Baldwin County 182265
Barbour County 27457
Bibb County 22915
但是,当我尝试对“CENSUS2010POP”列应用排序时,它会破坏所有层次结构:
在:
df = census_df
df = df.set_index(["STNAME" ,"CTYNAME"])
df = df.loc[: ,["CENSUS2010POP"]]
df = df.sort_values("CENSUS2010POP")
print (df.head())
出去:
CENSUS2010POP
STNAME CTYNAME
Texas Loving County 82
Hawaii Kalawao County 90
Texas King County 286
Kenedy County 416
Nebraska Arthur County 460
我想知道是否有办法对列和索引级别进行排序
任何帮助将非常感激
解决方案
您可以添加STNAME
到sort_values
df.sort_values(['STNAME','CENSUS2010POP'])
关于随机数据:
np.random.seed(1)
df = pd.DataFrame({
'STNAME':[0]*4+[1]*4,
'CTYNAME':[0,1,2,3]*2,
'CENSUS2010POP':np.random.randint(10,100,8)
}).set_index(['STNAME', 'CTYNAME'])
输出是:
CENSUS2010POP
STNAME CTYNAME
0 3 19
1 22
0 47
2 82
1 1 15
3 74
0 85
2 89
推荐阅读
- mysql - 导入计数后行数不同
- path - 不能将 ipython 或 julia repls 的命令与 zsh 一起使用
- node.js - 运行需要不同版本节点的 NodeJS 程序
- mysql - Xammp 和 MySQL 中的自动关闭错误
- javascript - 如何在继续之前等待 cordova.plugins.sqlitePorter.exportDbToSql 完成?
- mysql - 无法使用 Fluent Migrator 更改具有主键的表
- python-3.x - 对 Pandas DataFrame 的列进行集成
- azure - 正确配置基于路径的 WAF 后的 Open ID Auth
- javascript - 是否有 numpy.interp() 的 javascript 替代品?
- python - 使用嵌套循环时加速 Python