Pandas - 如何使用带有索引的字典对列的行进行排序

我必须根据字典对 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)

它们是如何排序的:


     countries  amount

0    Brazil     1000

1    Russia     2000

2    China      3000

我需要如何对它们进行排序(作为数据框):


    countries   amount

0   Russia      2000

1   China       3000

2   Brazil      1000

关于如何在不遍历每一行的情况下实现这一点的任何想法?


慕的地6264312
浏览 111回答 2
2回答

胡子哥哥

利用argsortdf=df.iloc[df.countries.map(howToSortDict).argsort()]  countries  amount1    Russia    20002     China    30000    Brazil    1000

素胚勾勒不出你

分两步:首先使用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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python