我正在寻找一种对具有多个索引级别的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
我想知道是否可以对列和索引级别进行排序
任何帮助将不胜感激
答案 0 :(得分:0)
您可以将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