首页 > 解决方案 > 按指定自定义顺序的列对熊猫数据框进行排序

问题描述

我有一个看起来像这样的 csv:

col1, col2, col3, col4
txt,txt,error,txt
txt,txt,new,txt
txt,txt,new,txt
txt,txt,error,txt
txt,txt,new,txt
txt,txt,fix,txt

我想将行的顺序更改为此

col1, col2, col3, col4
txt,txt,new,txt
txt,txt,new,txt
txt,txt,new,txt
txt,txt,fix,txt
txt,txt,error,txt
txt,txt,error,txt

所以行跟随新闻->更改-> col3中的错误

到目前为止,尝试了不同的事情:

import pandas as pd
csv_dataframe = pd.read_csv(user_submitted_csv_file)
csv_dataframe = csv_dataframe.sort_values(by=['col3'])

但这还不够,因为它不是按字母顺序排列的,也不是升序/降序的。还尝试了诸如提取行->删除所有行->以正确顺序重新添加之类的方法,但是也遇到了问题...

标签: pythonpandasdataframesorting

解决方案


pandas>=1.1.0您可以使用该方法的key参数编写一个 lambda 函数,该函数定义您喜欢的自.sort_values定义顺序。

为此,您只需要使用您想要的顺序定义一个自定义字典

custom_dict = {'new': 0, 'fix': 1, 'error': 2}
df.sort_values(by=['col3'], key=lambda x: x.map(custom_dict))

推荐阅读