Python高效辦公|再談自定義排序

前言

之前我講過Excel怎么自定義排序,之前的思路是下面這樣的。

① 讀入數據,定義好排序的列表。
② 定義空的DataFrame,通過循環(huán)過濾數據。
③ 最后將數據進行合并。

import pandas as pd

data = pd.read_excel('測試.xlsx',sheetname='data')
sort_list = ['采石場','工礦用地','能源設施','旅游設施','交通設施','養(yǎng)殖場','農業(yè)用地','居民點','其他人工設施']

new_data = pd.DataFrame({'一級類型':[],
                        '面積':[]})

for i in sort_list:
    new_data = pd.concat([new_data,data[data['一級類型'] == i]])

new_data

最近又遇到了這個問題,但是用之前的思路就會麻煩點,不是很智能,主要是出現了兩個問題。

問題一:無法行和列都自定義排序,這次遇到的表行和列都很多,都需要排序,這種方法沒法解決。

問題二:給定的列順序名稱與表格不一致,給定的順序要多一些。

解決思路

這次我們用到pandas的reindex函數,重新索引,當索引不在原表的時候,就會用空值表示。行我們直接索引就行,沒必要那么復雜。(行沒法用reindex,因為有重復的名稱,會報錯)。

以下就是樣表,我們行的順序要是[居民點,農用地,旅游設施],列的順序就是個數,單位,面積。

import pandas as pd

df = pd.read_excel('test.xlsx',index_col=0)
col_sort = ['個數','單位','面積']
row_sort = ['居民點','農用地','旅游設施']

df = df.reindex(columns = col_sort)
df.loc[row_sort]
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容