這篇文章主要講解了“Python怎么指定列前置”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python怎么指定列前置”吧!
創(chuàng)新互聯(lián)公司2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站設計、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元貴溪做網(wǎng)站,已為上家服務,為貴溪各地企業(yè)和個人服務,聯(lián)系電話:13518219792
有位小伙伴提了一個簡單的問題,數(shù)據(jù)如下:
我希望把列"key1,2,3"調(diào)整到表頭的最左邊,其他的列順序我不關心
別讓我把所有列名寫出來,因為我有些表可能有幾十上百的列
我們需要知道一些前提知識。
pandas 中怎么指定列順序?非常簡單:
往 df[] 中指定多個列名的 list 即可
顯然,提問者就是不希望手工輸入所有的列表
pandas 中怎么獲取表的所有列名:
df.columns 即可。
如果希望得到列表,只需要 list(df.columns) 即可
如何拼接 Python 中的2個列表:
理解這兩點后,現(xiàn)在的問題其實不是什么 pandas 或 啥表頭的順序問題,而是一個列表構造問題:
行4:是解決問題的關鍵
接下來,基于這些前提條件和思路,看看能做出多少種解法
這是最直接的方式:
行4-7:遍歷所有列,把非目標列名去掉即可
如果你不熟悉推導式,也可以用 for in 遍歷
"我不懂啥推導式呀,遍歷也用得不熟悉,有沒有不用遍歷的方式?"
"Python 不是一直聲稱語法簡單嗎,為什么不可以把 2 個列表相減,就得到剩余列名?"
這想法還挺有道理的,為什么不呢?
因為列表中的元素是可以重復的,如果 2 個列表能相減,他就要考慮有重復元素與沒有重復元素的歧義。
因此,列表是不能相減,但是 Python 中的確有一種東西與列表相似,但他里面的元素不能重復—— set(集)
由此我們可以得到第二種解法:
行4:用 set 函數(shù)得到 set 結構,即可相減。
為什么需要在外面再套一個 list 呢?因為下一步我們需要使用 "列表相加" 的騷操作
細心的你可能注意到,出來的結果中,其他列的順序與解法1不一樣!
因為 set 是不關心元素順序的,2 個 set 相減后,順序變化了
"有沒有不同遍歷,有可以保留其他列的原始前后順序的?"
前面的解法,本質(zhì)上都在做去重工作。pandas 中不也有去重功能嗎,我們也可以用上。
行4:pd.Series 中傳入有重復元素的列表,就能返回一個 Series。使用他的去重方法即可完成
"有問題啊,new_cols 是列表?,不應該是一個 Series 嗎?為什么 df[一個Series] 也能改變列順序?"
實際上,df[] 里面可以接受大多數(shù)序列,比如 set 或 numpy 的數(shù)組等等,唯獨元組不行。
感謝各位的閱讀,以上就是“Python怎么指定列前置”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Python怎么指定列前置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!