Сортировка колонок датафрейма по заданному алгоритму 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
→ Ссылка