Czy istnieje sposób na zmianę kolejności kolumn w pandas dataframe w oparciu o moje osobiste preferencje (tj. Nie posortowane alfabetycznie lub numerycznie, ale bardziej jak przestrzeganie pewnych konwencji)?
Prosty przykład:
frame = pd.DataFrame({
'one thing':[1,2,3,4],
'second thing':[0.1,0.2,1,2],
'other thing':['a','e','i','o']})
daje to:
one thing other thing second thing
0 1 a 0.1
1 2 e 0.2
2 3 i 1.0
3 4 o 2.0
Ale zamiast tego chciałbym to:
one thing second thing other thing
0 1 0.1 a
1 2 0.2 e
2 3 1.0 i
3 4 2.0 o
(Proszę podać ogólne rozwiązanie, a nie specyficzne dla tego przypadku. Wielkie dzięki.)
Możesz użyć tego:
źródło
pandas
.pandas
0.23).Oto rozwiązanie, z którego korzystam bardzo często. Gdy masz duży zestaw danych z tonami kolumn, zdecydowanie nie chcesz ręcznie zmieniać kolejności wszystkich kolumn.
To, co możesz i najprawdopodobniej chcesz zrobić, to po prostu zamówić kilka pierwszych kolumn, których często używasz, i pozwolić wszystkim pozostałym kolumnom być sobą. Jest to powszechne podejście w R.
df %>%select(one, two, three, everything())
Możesz więc najpierw ręcznie wpisać kolumny, które chcesz uporządkować, i umieścić je przed wszystkimi innymi kolumnami na liście
cols_to_order
.Następnie tworzysz listę dla nowych kolumn, łącząc pozostałe kolumny:
Następnie możesz użyć
new_columns
innych sugerowanych rozwiązań.źródło
Możesz też zrobić coś takiego
df = df[['x', 'y', 'a', 'b']]
Możesz również uzyskać listę kolumn za pomocą:
Wynik da coś takiego:
Które można następnie łatwo zmienić ręcznie.
źródło
Skonstruuj go za pomocą listy zamiast słownika
źródło
Możesz także użyć OrderedDict:
źródło
Dodaj parametr „kolumny”:
źródło
Spróbuj indeksować (więc chcesz mieć ogólne rozwiązanie nie tylko do tego, aby kolejność indeksowania była dokładnie taka, jak chcesz):
Teraz:
Jest:
źródło
Uważam, że jest to najbardziej proste i działające:
źródło