防止在pandas中对列名进行排序 - python

时间:2016-07-07 09:23:20

标签: python pandas

df = pd.DataFrame(data={'i1':['x','x','x','x','y','y','y','y'], 'i2':['f','a','w','h','f','a','w','h'], 'c1':np.random.randn(8),'c2':np.random.randn(8)})
df.set_index(['i1','i2'],inplace=True)

df.unstack('i2')按字母顺序对i2中的列名进行排序。如何防止此排序并保留原始序列(f a w h)

2 个答案:

答案 0 :(得分:2)

您可以使用ordered Categorical

df['i2'] = pd.Categorical(df.i2, categories=['f', 'a', 'w', 'h'], ordered=True)

df.set_index(['i1','i2'],inplace=True)
print (df)

print (df.unstack('i2'))
          c1                                      c2                      \
i2         f         a         w         h         f         a         w   
i1                                                                         
x  -0.663218  1.005395  0.236088  1.416896  2.729855  0.141692  0.136700   
y   0.509393  0.370418 -1.301840 -1.067212  0.945016 -0.617570  1.377235   


i2         h  
i1            
x  -0.029020  
y  -2.346038  

答案 1 :(得分:2)

另一种方法是使用原始<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".HomePageActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical" layout_marginBottom="5dp" android:background="@color/white"/> </RelativeLayout> 排序对列进行set_levels

index