pandas在指定位置新增一列!簡單和通用方法

2021-09-07 19:58:57 字數 838 閱讀 2690

相信有很多人收這個問題的困擾,如果你想一次性在pandas.dataframe裡新增幾列,或者在指定的位置新增一列,都會很苦惱找不到簡便的方法;可以用到的函式有df.reindex, pd.concat

我們來看乙個例子:

df 是乙個dataframe, 如果你只想在df的後面新增一列,可以用下面的方法:

但是如果你想一次性新增兩列級以上,你可能會用通樣的辦法

df[['d','e']] == none ,結果報錯如下:

所以接下來我想介紹兩種認為比較簡便的方法

(1)第乙個方法是利用pd.concat 在dataframe後面新增兩列,這種方法的缺點是不能指定位置

pd.concat([df, pd.dataframe(columns=list('de'))])

(2)第二種方法是利用 reindex來重排和增加列名df.reindex(columns=list('abcde'))

這種方法,你可以改變各列的相對位置,且保留原始列的數值,比如df.reindex(columns=list('bcade'))

reindex 還有 fill_value 選項,可以填充nan,例子如下df.reindex(columns=list('abcde'), fill_value=0)

當然這裡舉的例子比較簡單,在實際運用中,列名可能都比較長,都敲出來肯定不方便,所以我們需要更強大的方法,運用到 list.insert的方法list.insert(index, obj)

引數index -- 物件obj需要插入的索引位置。

obj -- 要插入列表中的物件。

先獲取原列名集合, 賦值給新變數(這個很重要,具體原因我也不知道為啥), 然後 insert

在指定位置插入新列

來由 現有一張表test a,b,c 怎樣在a和b列之間插入新列d 希望結果 test a,d,b,c vivianfdlpw 2005.9 引用請保留此資訊 建立測試環境 create table test a varchar 20 b varchar 20 c varchar 20 go 允許系...

在指定位置插入新列

來由 現有一張表test a,b,c 怎樣在a和b列之間插入新列d 希望結果 test a,d,b,c vivianfdlpw 2005.9 引用請保留此資訊 建立測試環境 create table test a varchar 20 b varchar 20 c varchar 20 go 允許系...

在指定位置插入新列

來由 現有一張表test a,b,c 怎樣在a和b列之間插入新列d 希望結果 test a,d,b,c vivianfdlpw 2005.9 引用請保留此資訊 建立測試環境 create table test a varchar 20 b varchar 20 c varchar 20 go 允許系...