Сортировка колонок датафрейма по заданному алгоритму pandas
помогите отсортировать колонки в датафрейме.
Текущий датафрейм
index 2017 2018 2019 2017 2018 2019 2017_% 2018_% 2019_% 2017_% 2018_% 2019_%
Ogrn 1111 1111 1111 2222 2222 2222 1111 1111 1111 2222 2222 2222
name A A A B B B A A A A A A
sales 10 15 20 50 55 40 0 0.5 0.25 0 0.1 - 0.2
Нужно чтобы получился вот такой датафрейм
index 2017 2017_% 2018 2018_% 2019 2019_% 2017 2017_% 2018 2018_% 2019 2019_%
Ogrn 1111 1111 1111 1111 1111 1111 2222 2222 2222 2222 2222 2222
name A A A A A A B B B B B B
sales 10 0 15 0.5 20 0.25 50 0 55 0.1 40 - 0.2
пытался тупо сделать list и потом отсортировать, но так не получается. Через chain пробовал, но неудачно
буду признателен за помощь
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ну как-то так например:
import pandas as pd
df = pd.DataFrame({
'index': "2017 2018 2019 2017 2018 2019 2017_% 2018_% 2019_% 2017_% 2018_% 2019_%".split(),
'Ogrn': "1111 1111 1111 2222 2222 2222 1111 1111 1111 2222 2222 2222".split(),
'name': "A A A B B B A A A A A A".split(),
'sales': "10 15 20 50 55 40 0 0.5 0.25 0 0.1 -0.2".split()
df.sort_values(["Ogrn", "index"]).T
Но у меня колонка name тогда почему-то выглядит по-другому чем у вас.
0 6 1 7 2 8 3 9 4 10 5 11
index 2017 2017_% 2018 2018_% 2019 2019_% 2017 2017_% 2018 2018_% 2019 2019_%
Ogrn 1111 1111 1111 1111 1111 1111 2222 2222 2222 2222 2222 2222
name A A A A A A B A B A B A
sales 10 0 15 0.5 20 0.25 50 0 55 0.1 40 -0.2