使用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 相关文章推荐
java直接调用python脚本的例子
Feb 16 Python
Python Tkinter GUI编程入门介绍
Mar 10 Python
python处理html转义字符的方法详解
Jul 01 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
python如何通过twisted实现数据库异步插入
Mar 20 Python
Python使用xlwt模块操作Excel的方法详解
Mar 27 Python
解决python执行不输出系统命令弹框的问题
Jun 24 Python
python和c语言的主要区别总结
Jul 07 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
May 11 Python
关于Python使用turtle库画任意图的问题
Apr 01 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部分常见问题总结
2006/10/09 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
javascript globalStorage类代码
2009/06/04 Javascript
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
2015/09/11 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
跟老齐学Python之类的细节
2014/10/13 Python
用matplotlib画等高线图详解
2017/12/14 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
体育之星事迹材料
2014/05/11 职场文书
学雷锋的心得体会
2014/09/04 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL