使用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 相关文章推荐
一个超级简单的python web程序
Sep 11 Python
python实现最长公共子序列
May 22 Python
Python操作mongodb数据库的方法详解
Dec 08 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
python基于SMTP协议发送邮件
May 31 Python
python序列化与数据持久化实例详解
Dec 20 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
基于python实现操作redis及消息队列
Aug 27 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
超详细Python解释器新手安装教程
May 10 Python
Python中Cookies导出某站用户数据的方法
May 17 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实现分页工具类分享
2014/01/09 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
python中的格式化输出用法总结
2016/07/28 Python
使用python实现tcp自动重连
2017/07/02 Python
Python 的AES加密与解密实现
2019/07/09 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
《童年的发现》教学反思
2014/02/14 职场文书
车间核算员岗位职责
2014/07/01 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android