慕的地6264312
2022-10-18 17:46:13
我必須根據(jù)字典對(duì) Dataframe 的列的值/行進(jìn)行排序,該字典包含數(shù)據(jù)框的每個(gè)值及其行索引,但排序方式不同。howToSortDict = {'Brazil': 2, 'Russia': 0, 'China': 1} # row value and its indexmyDict = { "countries": ["Brazil", "Russia", "China"], "amount": [1000, 2000, 3000]}df = pd.DataFrame(myDict)它們是如何排序的: countries amount0 Brazil 10001 Russia 20002 China 3000我需要如何對(duì)它們進(jìn)行排序(作為數(shù)據(jù)框): countries amount0 Russia 20001 China 30002 Brazil 1000關(guān)于如何在不遍歷每一行的情況下實(shí)現(xiàn)這一點(diǎn)的任何想法?
2 回答

胡子哥哥
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
利用argsort
df=df.iloc[df.countries.map(howToSortDict).argsort()]
countries amount
1 Russia 2000
2 China 3000
0 Brazil 1000

素胚勾勒不出你
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
分兩步:
首先使用map與國(guó)家關(guān)聯(lián)的值創(chuàng)建一個(gè)新列
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
添加回答
舉報(bào)
0/150
提交
取消