01 问题描述
如下图所示,我需要将一级类型按照“采石场 > 工矿用地 > 能源设施 > 旅游设施 > 交通设施 > 养殖场 > 农业用地 > 居民点 > 其他人工设施”这个顺序进行排序。
显然,通过Excel的普通排序是无法做到的(普通的排序是按字母的顺序进行排序的)。这里就需要自定义排序了。
02 自定义排序
Excel自定义排序的操作流程为:
① 在Excel选项中,点击高级,找到编辑自定义列表。
② 定义自己需要排序的顺序,点击确定即可。
③ 选择需要排序的区域,选择“数据 > 排序”。
④ 选择依据排序的列,和自定义排序,找到之前定义好的顺序即可完成。
03 Python解决
当然,最后还是讲解下如何通过Python解决自定义排序吧。
在sort_value方法中没找到可以解决的办法,所以采用了最笨的方法。
① 读入数据,定义好排序的列表。
② 定义空的DataFrame,通过循环过滤数据。
③ 最后将数据进行合并。
import pandas as pd
data = pd.read_excel('测试.xlsx',sheetname='data')
sort_list = ['采石场','工矿用地','能源设施','旅游设施','交通设施','养殖场','农业用地','居民点','其他人工设施']
new_data = pd.DataFrame({'一级类型':[],
'面积':[]})
for i in sort_list:
new_data = pd.concat([new_data,data[data['一级类型'] == i]])
new_data
网友评论