Pandas - как отсортировать строки столбца, используя словарь с индексами - PullRequest
1 голос
/ 22 апреля 2020

Я должен отсортировать значения / строки столбца Dataframe в соответствии со словарем, который содержит каждое значение dataframe и его индекс строки, но отсортирован по-разному.

howToSortDict = {'Brazil': 2, 'Russia': 0, 'China': 1} # row value and its index

myDict = {
    "countries": ["Brazil", "Russia", "China"],
    "amount": [1000, 2000, 3000]
}

df = pd.DataFrame(myDict)

Как они sorted:

     countries  amount
0    Brazil     1000
1    Russia     2000
2    China      3000

Как мне нужно их отсортировать (как фрейм данных):

    countries   amount
0   Russia      2000
1   China       3000
2   Brazil      1000

Есть идеи о том, как этого добиться, не зацикливаясь на каждой строке?

Ответы [ 2 ]

3 голосов
/ 22 апреля 2020

IIU C argsort

df=df.iloc[df.countries.map(howToSortDict).argsort()]
  countries  amount
1    Russia    2000
2     China    3000
0    Brazil    1000
2 голосов
/ 22 апреля 2020

В два этапа:

Сначала используйте map, чтобы создать новый столбец со значениями, связанными со странами

df['country_value'] = df.countries.map(howToSortDict)

Затем sort и drop новый столбец

df.sort_values('country_value').drop('country_value',axis=1)

#    countries   amount
#1   Russia      2000
#2   China       3000
#0   Brazil      1000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...