可以使用GROUPBY的組合和應用:
In [2]: df = pd.DataFrame({
'transID': range(8),
'Location': ['New York','Chicago','New York','New York','Atlanta','Los Angeles',
'Chicago','Atlanta'],
'Sales': np.random.randint(0,10000,8)}).set_index('transID')
In [3]: df
Out[3]:
Location Sales
transID
0 New York 1082
1 Chicago 1664
2 New York 692
3 New York 5669
4 Atlanta 7715
5 Los Angeles 987
6 Chicago 4085
7 Atlanta 2927
In [4]: df.groupby('Location').apply(lambda d: d.sort()).reset_index('Location',drop=True)
Out[4]:
Location Sales
transID
4 Atlanta 7715
7 Atlanta 2927
1 Chicago 1664
6 Chicago 4085
5 Los Angeles 987
0 New York 1082
2 New York 692
3 New York 5669
我在最後一行放置「位置」,因爲groupby會將分組級別插入到第一個位置該指數。排序然後刪除它們可以保留排序的順序。
感謝。但是這會導致索引的破壞,在某些情況下我可能不喜歡索引,因此仍然更喜歡'reset_index()'...感謝您的回答。 – Blaszard
「破壞指數」是什麼意思? – cyborg
這將破壞多指令。您可以在[docs](http://pandas.pydata.org/pandas-docs/stable/advanced.html)中的多索引示例之一上嘗試此操作。我會發布代碼,但它作爲評論基本上是不可讀的。 – Russ