使用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搭建Django应用程序步骤及版本冲突问题解决
Nov 19 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
在Python中操作文件之truncate()方法的使用教程
May 25 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
python elasticsearch从创建索引到写入数据的全过程
Aug 04 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
Python 线程池用法简单示例
Oct 02 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
python 两种方法删除空文件夹
Sep 29 Python
python GUI计算器的实现
Oct 09 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后台程序与Javascript的两种交互方式
2009/10/25 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
Codeigniter框架实现获取分页数据和总条数的方法
2014/12/05 PHP
js精度溢出解决方案
2012/12/02 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
Vue的生命周期操作示例
2019/09/17 Javascript
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
Sunglass Hut巴西网上商店:男女太阳镜
2020/10/04 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
网络工程专业大学生求职信
2014/10/01 职场文书
教师求职简历自我评价
2015/03/10 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
环保主题班会教案
2015/08/13 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
MySQL中order by的执行过程
2022/06/05 MySQL