我必须根据字典对 Dataframe 的列的值/行进行排序,该字典包含数据框的每个值及其行索引,但排序方式不同。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我需要如何对它们进行排序(作为数据框): countries amount0 Russia 20001 China 30002 Brazil 1000关于如何在不遍历每一行的情况下实现这一点的任何想法?
2 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
利用argsort
df=df.iloc[df.countries.map(howToSortDict).argsort()]
countries amount
1 Russia 2000
2 China 3000
0 Brazil 1000
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
分两步:
首先使用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
添加回答
举报
0/150
提交
取消