2017-07-26 56 views
-1

我有一個看起來像下面維持秩序大熊貓的情節GROUPBY

univ date   ms  cs 
C 11/01/1977  0.2  0.1 
C 11/02/1977  0.3  0.4 
B 11/01/1977  0.6  -0.1 
B 11/02/1977  0.55 -0.5 
A 11/01/1977  0.23 0.2 
A 11/02/1977  0.12 0.15 
etc 

這是一個數據幀是我目前有

fig, axes = plt.subplots(1, 3, figsize=(15, 5)) 

for (universe, group), ax in zip(df.groupby([df.univ]), axes.flatten()): 
    group.plot(x='ms', y='cs', kind='scatter', ax=ax, title=universe) 
    ax.set_xlim(0, 1) 
    ax.set_ylim(0, 1) 

這將產生3個散點圖,從0到極限1. 我想要做的是保持標題爲C,B,A的地塊的順序,以便它被A,B,C排序。

感謝您的幫助!

+0

請修復縮進 – jacoblaw

+0

可能重複[如何在python散點圖上重疊繪製一條線?](https://stackoverflow.com/questions/19068862/how-to-overplot-a-line-on-a -scatter-情節中的Python) –

回答

2

問題在於groupby默認情況下按照排序順序返回項目。只需設置標誌sort=False

for (universe, group), ax in zip(df.groupby([df.univ], sort=False), axes.flatten()): 
    group.plot(x='ms', y='cs', kind='scatter', ax=ax, title=universe) 
    ax.set_xlim(0, 1) 
    ax.set_ylim(0, 1) 

您也可以按您希望的任何順序返回它們。

gb = df.groupby('univ') 
desired_order = ('B', 'A', 'C') 
for (universe, group), ax in zip(((u, gb.get_group(u)) for u in desired_order), 
           axes.flatten()): 
    ... 

而順便說一句,你應該只有每個職位有一個問題。