2017-01-19 55 views
1

當我嘗試使用不同索引創建這兩個系列的dataframe時,pandas不保留該系列中列的順序,如下所示。當從系列中製作數據框時保留列順序

index = ['one','two','three','four','five','six','seven','eight','nine','ten'] 
index2 = index[:9] + ['Ha'] 

a = pd.Series(list(range(10)), index = index) 
b = pd.Series(list(range(10)), index = index2)*2 

df = pd.DataFrame([a,b], index = ['tens','times2']) 

輸出

Ha eight five four nine one  seven six  ten  three two 

但是,當我做dataframe與具有原始列順序(名單index的順序)保留了相同的指數系列。這是爲什麼發生?

+0

的可能的複製[如何創建一個數據幀,同時保留列的順序?](http://stackoverflow.com/questions/36539396/how -to-創建-A-數據幀,同時保留訂單的最柱) – ppasler

回答

1

這是因爲當2 Series的索引不匹配時,熊貓會將它們合併在一起並按字母順序排列。這使得DataFrame的列具有我認爲您在創建DataFrame後需要重新排序它們的順序。

df = pd.DataFrame([a, b], index=['tens', 'times2']) df = df.reindex_axis(index + ['Ha'], axis='columns')

df.reindex_axis是做df = df[index + ['Ha']]的更快的方式

相關問題