Python 3.x 分层索引按列排序,同时保留原始列
我试图模拟一个Hiralical索引数据帧,如下所示:Python 3.x 分层索引按列排序,同时保留原始列,python-3.x,pandas,Python 3.x,Pandas,我试图模拟一个Hiralical索引数据帧,如下所示: >>> raw_data = ({'city': ['Delhi', 'Kanpur', 'Mumbai', 'Pune','Delhi', 'Kanpur', 'Mumbai', 'Pune'], ... 'rank': ['1st', '2nd', '1st', '2nd','1st', '2nd', '1st', '2nd'], ... 'name':
>>> raw_data = ({'city': ['Delhi', 'Kanpur', 'Mumbai', 'Pune','Delhi', 'Kanpur', 'Mumbai', 'Pune'],
... 'rank': ['1st', '2nd', '1st', '2nd','1st', '2nd', '1st', '2nd'],
... 'name': ['Ramesh', 'Kirpal', 'Jungi', 'Sanju','Ramesh', 'Kirpal', 'Jungi', 'Sanju'],
... 'score1': [10,15,20,25,10,15,20,25],
... 'score2': [20,35,40,45,20,35,40,45]})
下面是DataFrame的外观,因此,datFrame附带了默认索引
>>> df = pd.DataFrame(raw_data, columns = ['city', 'rank', 'name', 'score1', 'score2'])
>>> df
city rank name score1 score2
0 Delhi 1st Ramesh 10 20
1 Kanpur 2nd Kirpal 15 35
2 Mumbai 1st Jungi 20 40
3 Pune 2nd Sanju 25 45
4 Delhi 1st Ramesh 10 20
5 Kanpur 2nd Kirpal 15 35
6 Mumbai 1st Jungi 20 40
7 Pune 2nd Sanju 25 45
我想通过选择'city',rank'
列和set.Index
方法来使用层次索引,同时保持原始列不变
>>> df.set_index(['city', 'rank'], drop=False)
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
Delhi 1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
但我希望先按城市建立索引,然后再按等级建立索引:
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
2nd Pune 2nd Sanju 25 45
就快到了,只需应用
排序索引()
:
收益率:
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
2nd Pune 2nd Sanju 25 45
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
要删除重复行,请添加删除重复行()
:
收益率:
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
2nd Pune 2nd Sanju 25 45
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
就快到了,只需应用
排序索引()
:
收益率:
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
2nd Pune 2nd Sanju 25 45
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
要删除重复行,请添加删除重复行()
:
收益率:
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
2nd Pune 2nd Sanju 25 45
city rank name score1 score2
city rank
Delhi 1st Delhi 1st Ramesh 10 20
Kanpur 2nd Kanpur 2nd Kirpal 15 35
Mumbai 1st Mumbai 1st Jungi 20 40
Pune 2nd Pune 2nd Sanju 25 45
您需要按城市、DF.SotTyValx(“城市”)对数据进行排序。StIGEL索引([城市','Real'’,LUP=false)@ RAHLF23,是的,但是,您可以考虑这两种方式。@毗舍离,它的作品!THNX一英里。你需要通过城市、DF.SotTyValx(“城市”)来排序数据。StIGEX索引([城市','Real'’,Loop= false)@ RAHLF23,是的,但是,你可以考虑这两种方式。@毗舍离,它的作品!一英里。