2017-04-01 105 views
2

我得到了一些數據:如何使用Pandas對數據框索引進行重新排序/排序?

# 3 Experiments 0,1 and 2. 
# 2 Setups 'foo' and 'bar' 
# 3 Measured parameters 'a', 'b' and 'c' 
d = {0: {'foo': {'a': 12.68, 'b': 54.44, 'c': 83.98}, 
     'bar': {'a': 11.73, 'b': 53.34, 'c': 82.93}}, 
    2: {'foo': {'a': 11.12, 'b': 57.99, 'c': 81.05}, 
     'bar': {'a': 10.05, 'b': 56.12, 'c': 80.01}}, 
    1: {'foo': {'a': 13.41, 'b': 54.32, 'c': 82.74}, 
     'bar': {'a': 12.77, 'b': 53.15, 'c': 82.01}}}  

我導入他們在大熊貓

ds = (pd.DataFrame.from_dict(d, orient='index') 
     .stack().apply(pd.Series) 
     .rename_axis(['experiment', 'setup'])) 

,然後是很好的顯示:

     a  b  c 
experiment setup 
0   foo 12.68 54.44 83.98 
      bar 11.73 53.34 82.93 
2   foo 11.12 57.99 81.05 
      bar 10.05 56.12 80.01 
1   foo 13.41 54.32 82.74 
      bar 12.77 53.15 82.01 

你注意到的實驗是在錯誤的順序和設置也沒有排序。所以我想索引排序,以顯示它如下:

     a  b  c 
experiment setup 
0   bar 11.73 53.34 82.93 
      foo 12.68 54.44 83.98 
1   bar 12.77 53.15 82.01 
      foo 13.41 54.32 82.74 
2   bar 10.05 56.12 80.01 
      foo 11.12 57.99 81.05 

我使用sortsort_indexsort_values甚至sortlevel嘗試了很多東西,但我似乎並沒有工作。我還嘗試使用reset_index將所有內容拼合起來,然後再次嘗試使用sort,但它不起作用。

如何根據需要對數據框進行排序或重新排序?

回答

2

這是非常奇怪的,由於預期sort_index不工作,但我設法通過重新索引,排序值和設定的指數回獲得預期的輸出:

ds = ds.reset_index()\ 
     .sort_values(by=['experiment','setup'])\ 
     .set_index(['experiment','setup']) 
+0

看來,在平坦的數據的工作是如何熊貓是專爲 – nowox

相關問題