使用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为什么不需要三目运算符和switch
Jun 17 Python
深入浅出分析Python装饰器用法
Jul 28 Python
Python的argparse库使用详解
Oct 09 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
Jun 28 Python
python实现猜拳小游戏
Apr 05 Python
Python文件路径名的操作方法
Oct 30 Python
解决torch.autograd.backward中的参数问题
Jan 07 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Python实现JS解密并爬取某音漫客网站
Oct 23 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
Django中的JWT身份验证的实现
May 07 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
twig里使用js变量的方法
2016/02/05 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
javascript 打印页面代码
2009/03/24 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
2017/01/10 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
2019/04/01 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
python使用多线程不断刷新网页的方法
2015/03/31 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
python实现比较文件内容异同
2018/06/22 Python
python对csv文件追加写入列的方法
2019/08/01 Python
ipad上运行python的方法步骤
2019/10/12 Python
Python OpenCV读取显示视频的方法示例
2020/02/20 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
在求职信中如何凸显个人优势
2013/10/30 职场文书
生产现场工艺工程师岗位职责
2013/11/28 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python