使用Python向DataFrame中指定位置添加一列或多列的方法
對于這個問題,相信很多人都會很困惑,本篇文章將會給大家介紹一種非常簡單的方式向DataFrame中任意指定的位置添加一列。
在此之前或許有不少讀者已經了解了最普通的添加一列的方式,如下:
import pandas as pd
feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1])
feature.columns = ["a","b"]
print(feature.head())
feature['c']='1'
print(feature.head())
這種添加方式得到的結果如下:
a b
0 4.459256 8.225418
1 0.043276 6.307400
2 6.997162 9.313393
3 4.754832 9.260378
4 8.661904 9.767977
a b c
0 4.459256 8.225418 1
1 0.043276 6.307400 1
2 6.997162 9.313393 1
3 4.754832 9.260378 1
4 8.661904 9.767977 1
同樣的也會有人想到concat()函數(關于concat()函數的更多介紹,可以參考我的另外一篇博客《在Pandas中DataFrame數據合并、連接(concat、merge、join)的實例》),如下:
import pandas as pd
feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1])
feature.columns = ["a","b"]
print(feature.head())
feature = pd.concat([feature, pd.DataFrame(columns=list('c'))])
print(feature.head())
利用concat()函數添加的結果如下:
a b
0 4.459256 8.225418
1 0.043276 6.307400
2 6.997162 9.313393
3 4.754832 9.260378
4 8.661904 9.767977
a b c
0 4.459256 8.225418 NaN
1 0.043276 6.307400 NaN
2 6.997162 9.313393 NaN
3 4.754832 9.260378 NaN
4 8.661904 9.767977 NaN
上述兩種方法添加一列存在一個弊端,那就是只能在DataFrame的末尾即最后一列添加。但是在有些情況下,我們需要在DataFrame的第一列或中間列位置添加新的一列,那么,有沒有一種方法可以指定位置添加一列呢?答案是肯定的,這就是本文一開始所說的那種及其簡單的方法。
如下:
import pandas as pd
feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1])
feature.columns = ["a","b"]
print(feature.head())
feature = feature.reindex(columns=list('cab'), fill_value=1)
print(feature.head())
上面代碼中的使用了reindex()方法,reindex()方法可以添加一列或多列數據,并且可以指定列的位置,也可以對原先存在的列進行重排。方法中的columns屬性控制著列的位置,c是添加的一列,其位于a和b前面,這說明c列是新數據框的第一列,fill_value屬性指定的是添加一列的值,其結果如下:
a b
0 4.459256 8.225418
1 0.043276 6.307400
2 6.997162 9.313393
3 4.754832 9.260378
4 8.661904 9.767977
c a b
0 1 4.459256 8.225418
1 1 0.043276 6.307400
2 1 6.997162 9.313393
3 1 4.754832 9.260378
4 1 8.661904 9.767977
同時,reindex()方法也可以同時添加多列(其實上面的concat()函數也可以添加多列,添加方式與reindex()一樣),如下:
import pandas as pd
feature = pd.read_csv("C://Users//Machenike//Desktop//xzw//lr_train_data.txt", delimiter="\t", header=None, usecols=[0, 1])
feature.columns = ["a","b"]
print(feature.head())
feature = feature.reindex(columns=list('cabd'), fill_value=1)
print(feature.head())
我們添加了c、d兩列,結果如下:
a b
0 4.459256 8.225418
1 0.043276 6.307400
2 6.997162 9.313393
3 4.754832 9.260378
4 8.661904 9.767977
c a b d
0 1 4.459256 8.225418 1
1 1 0.043276 6.307400 1
2 1 6.997162 9.313393 1
3 1 4.754832 9.260378 1
4 1 8.661904 9.767977 1
你們在此過程中遇到了什么問題,歡迎留言,讓我看看你們都遇到了哪些問題。
以上這篇使用Python向DataFrame中指定位置添加一列或多列的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python 統計一個列表當中的每一個元素出現了多少次的方法
今天小編就為大家分享一篇python 統計一個列表當中的每一個元素出現了多少次的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
python 點云地面點濾波-progressive TIN densification(PTD)算法介紹
關于地面點濾波的概念我們要與孤立點(outlier)濾波區(qū)分開,孤立點濾波可以理解為圖像中的去噪,去除數據測量過程中受到飛鳥、多路徑效應所產生的遠低于/高于其他數據的點。今天通過本文給大家分享python PTD點云地面點濾波的相關知識,一起看看吧2021-08-08

