Остановить Pandas от сортировки столбцов - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь создать отчет, а затем запускаю приведенный ниже код


    import pandas as pd

    df = pd.read_excel("proposals2020.xlsx", sheet_name="Proposals")

    country_probability = df.groupby(["Country", "Probability"]).count()
    country_probability = country_probability.unstack()
    country_probability = country_probability.fillna("0")
    country_probability = country_probability.drop(country_probability.columns[4:], axis=1)
    country_probability = country_probability.drop(country_probability.columns[0], axis=1)
    country_probability = country_probability.astype(int)

    print(country_probability)

Я получаю следующие результаты:

             Quote Number           
Probability          High Low Medium
Country                             
Algeria                 3   1      9
Bahrain                 4   3      2
Egypt                   2   0      3
Iraq                    3   0      8
Jordan                  0   1      1
Lebanon                 0   1      0
Libya                   1   0      0
Morocco                 0   0      2
Pakistan                3  10     11
Qatar                   0   1      1
Saudi Arabia           16   8     19
Tunisia                 2   5      0
USA                     0   1      0

Мой вопрос в том, как остановить pandas от сортировки этих столбцов по алфавиту и сохранения высокого, среднего, низкого порядка ...

1 Ответ

1 голос
/ 26 мая 2020

DataFrame.reindex

# if isinstance(df.columns, pd.MultiIndex)
df = df.reindex(['High', 'Medium', 'Low'], axis=1, level=1) 

Если не MultiIndex в столбцах:

# if isinstance(df.columns, pd.Index)
df = df.reindex(['High', 'Medium', 'Low'], axis=1)

Мы также можем попробовать передать sort = False в groupby:

country_probability = df.groupby(["Country", "Probability"], sort=False).count()
...