Python-pandas DataFrame利用columnName 插入列(column) 新增列

交換column順序並保留原始內容的方式有許多種。

大多數是用index,這篇將是用columnName

因為自己遇到的excel檔案可能有幾十個column,不想看也不想算到底是數來第幾個...

有名字好辦事啊!


插入一欄新的列(column)

這個列的內容都會為空值

首先請自行準備好有資料的DataFrame

以下程式DataFrame變數為df

col_name = df.columns.tolist()

#先取得所有的df的columns名稱


col_name.insert(col_name.index('column名稱')+1,'這邊是新插入的column名稱')

#在指定的column名稱後面增加新的一列


df=df.reindex(columns=col_name)

#將df更新為新的columns順序

以上便完成了新的一列插入


插入原本的列(column)

這邊推薦如列數很少,可以直接更新DataFrame就好

例如我有一個DataFrame名df有三個column名稱A B C

順序即為A B C

我想將其改成A C B,只要下列一行程式即可 

df = pd.DataFrame(df, columns = ["A","C","B"])

我想將其改成A C,不要B,也只要下列一行程式即可

df = pd.DataFrame(df, columns = ["A","C"])

這樣一定是最快的,但column若有30個...就寫到瘋了哈哈...


但要用columnName保留內容並修改順序,會需要比較多步驟

加設同樣是column名稱A B C,我需要把C換到A後面

也就是順序變成A C B

步驟如下

df_saveC = df['C']

  #1.先另外保留要換位置的column內容


df=df.drop('C',axis=1)

  #2.將要換位置的column內容從DataFrame刪除


col_name = df.columns.tolist()

#3.把上面「插入一欄新的列(column)」都做一遍

#先取得所有的df的columns名稱


col_name.insert(col_name.index('A')+1,'C')

#在指定的column名稱後面增加新的一列


df=df.reindex(columns=col_name)

#將df更新為新的columns順序


df['C']=df_saveC

#4.此時C欄會是空值,所以把C指定回一開始另外保留的df_saveC


以上就完成了保留列內容的插入啦!

當column多的時候,這個小技巧很實用喔!

留言