2017-01-19 2 views
1

Когда я пытаюсь сделать dataframe этих двух серий с разными индексами, pandas не сохраняет порядок столбцов из серии, как показано ниже.Сохранение порядка столбцов при создании DataFrame из серии

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

Возможный дубликат [Как создать DataFrame сохраняя при этом порядок столбцов?] (Http://stackoverflow.com/questions/36539396/how -в-Create-A-dataframe-то время сохраняющего порядка-оф-столбцов) – ppasler

ответ

1

Это связано с тем, что если индексы 2 Series не совпадают, Pandas объединит их и поместит столбцы в алфавитном порядке. Это приводит к тому, что столбцы 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']]

Смежные вопросы