使用Python向DataFrame中指定位置添加一列或多列的方法


Posted in Python onJanuary 29, 2019

对于这个问题,相信很多人都会很困惑,本篇文章将会给大家介绍一种非常简单的方式向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 相关文章推荐
在Mac OS上使用mod_wsgi连接Python与Apache服务器
Dec 24 Python
python虚拟环境virtualenv的安装与使用
Sep 21 Python
Python iter()函数用法实例分析
Mar 17 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
python实现生成Word、docx文件的方法分析
Aug 30 Python
Python全栈之列表数据类型详解
Oct 01 Python
Python3+Selenium+Chrome实现自动填写WPS表单
Feb 12 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
利用python画出AUC曲线的实例
Feb 28 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
Python Pexpect库的简单使用方法
Jan 29 #Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
Jan 29 #Python
对python numpy.array插入一行或一列的方法详解
Jan 29 #Python
对python中list的拷贝与numpy的array的拷贝详解
Jan 29 #Python
10 分钟快速入门 Python3的教程
Jan 29 #Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 #Python
解决python中画图时x,y轴名称出现中文乱码的问题
Jan 29 #Python
You might like
PHP常用的排序和查找算法
2015/08/06 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
javascript对浅拷贝和深拷贝的详解
2016/10/14 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python虚拟环境项目实例
2017/11/20 Python
Python SQLite3简介
2018/02/22 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
python selenium操作cookie的实现
2020/03/18 Python
python 写一个性能测试工具(一)
2020/10/24 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
老公给老婆的道歉信
2014/01/10 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
个人工作保证书
2015/02/28 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python