使用DataFrame删除行和列的实例讲解


Posted in Python onApril 08, 2018

本文通过一个csv实例文件来展示如何删除Pandas.DataFrame的行和列

数据文件名为:example.csv

内容为:

date spring summer autumn winter
2000 12.2338809 16.90730113 15.69238313 14.08596223
2001 12.84748057 16.75046873 14.51406637 13.5037456
2002 13.558175 17.2033926 15.6999475 13.23365247
2003 12.6547247 16.89491533 15.6614647 12.84347867
2004 13.2537298 17.04696657 15.20905377 14.3647912
2005 13.4443049 16.7459822 16.62218797 11.61082257
2006 13.50569567 16.83357857 15.4979282 12.19934363
2007 13.48852623 16.66773283 15.81701437 13.7438216
2008 13.1515319 16.48650693 15.72957287 12.93233587
2009 13.45771543 16.63923783 18.26017997 12.65315943
2010 13.1945485 16.7286889 15.42635267 13.8833583
2011 14.34779417 16.68942103 14.17658043 12.36654197
2012 13.6050867 17.13056773 14.71796777 13.29255243
2013 13.02790787 17.38619343 16.20345497 13.18612133
2014 12.74668163 16.54428687 14.7367682 12.87065125
2015 13.465904 16.50612317 12.44243663 11.0181384
season spring summer autumn winter
slope 0.0379691374 -0.01164689167 -0.07913844113 -0.07765274553

删除行

In [1]:
import numpy as np
import pandas as pd
odata = pd.read_csv('example.csv')
odata
Out[1]:
date  spring  summer  autumn  winter
0  2000  12.2338809  16.9073011333  15.6923831333  14.0859622333
1  2001  12.8474805667  16.7504687333  14.5140663667  13.5037456
2  2002  13.558175  17.2033926  15.6999475  13.2336524667
3  2003  12.6547247  16.8949153333  15.6614647  12.8434786667
4  2004  13.2537298  17.0469665667  15.2090537667  14.3647912
5  2005  13.4443049  16.7459822  16.6221879667  11.6108225667
6  2006  13.5056956667  16.8335785667  15.4979282  12.1993436333
7  2007  13.4885262333  16.6677328333  15.8170143667  13.7438216
8  2008  13.1515319  16.4865069333  15.7295728667  12.9323358667
9  2009  13.4577154333  16.6392378333  18.2601799667  12.6531594333
10  2010  13.1945485  16.7286889  15.4263526667  13.8833583
11  2011  14.3477941667  16.6894210333  14.1765804333  12.3665419667
12  2012  13.6050867  17.1305677333  14.7179677667  13.2925524333
13  2013  13.0279078667  17.3861934333  16.2034549667  13.1861213333
14  2014  12.7466816333  16.5442868667  14.7367682  12.8706512467
15  2015  13.465904  16.5061231667  12.4424366333  11.0181384
16  season  spring  summer  autumn  winter
17  slope  0.037969137402  -0.0116468916667  -0.0791384411275  -0.0776527455294

.drop()方法如果不设置参数inplace=True,则只能在生成的新数据块中实现删除效果,而不能删除原有数据块的相应行。

In [2]:
data = odata.drop([16,17])
odata
Out[2]:
date  spring  summer  autumn  winter
0  2000  12.2338809  16.9073011333  15.6923831333  14.0859622333
1  2001  12.8474805667  16.7504687333  14.5140663667  13.5037456
2  2002  13.558175  17.2033926  15.6999475  13.2336524667
3  2003  12.6547247  16.8949153333  15.6614647  12.8434786667
4  2004  13.2537298  17.0469665667  15.2090537667  14.3647912
5  2005  13.4443049  16.7459822  16.6221879667  11.6108225667
6  2006  13.5056956667  16.8335785667  15.4979282  12.1993436333
7  2007  13.4885262333  16.6677328333  15.8170143667  13.7438216
8  2008  13.1515319  16.4865069333  15.7295728667  12.9323358667
9  2009  13.4577154333  16.6392378333  18.2601799667  12.6531594333
10  2010  13.1945485  16.7286889  15.4263526667  13.8833583
11  2011  14.3477941667  16.6894210333  14.1765804333  12.3665419667
12  2012  13.6050867  17.1305677333  14.7179677667  13.2925524333
13  2013  13.0279078667  17.3861934333  16.2034549667  13.1861213333
14  2014  12.7466816333  16.5442868667  14.7367682  12.8706512467
15  2015  13.465904  16.5061231667  12.4424366333  11.0181384
16  season  spring  summer  autumn  winter
17  slope  0.037969137402  -0.0116468916667  -0.0791384411275  -0.0776527455294
In [3]:
data
Out[3]:
date  spring  summer  autumn  winter
0  2000  12.2338809  16.9073011333  15.6923831333  14.0859622333
1  2001  12.8474805667  16.7504687333  14.5140663667  13.5037456
2  2002  13.558175  17.2033926  15.6999475  13.2336524667
3  2003  12.6547247  16.8949153333  15.6614647  12.8434786667
4  2004  13.2537298  17.0469665667  15.2090537667  14.3647912
5  2005  13.4443049  16.7459822  16.6221879667  11.6108225667
6  2006  13.5056956667  16.8335785667  15.4979282  12.1993436333
7  2007  13.4885262333  16.6677328333  15.8170143667  13.7438216
8  2008  13.1515319  16.4865069333  15.7295728667  12.9323358667
9  2009  13.4577154333  16.6392378333  18.2601799667  12.6531594333
10  2010  13.1945485  16.7286889  15.4263526667  13.8833583
11  2011  14.3477941667  16.6894210333  14.1765804333  12.3665419667
12  2012  13.6050867  17.1305677333  14.7179677667  13.2925524333
13  2013  13.0279078667  17.3861934333  16.2034549667  13.1861213333
14  2014  12.7466816333  16.5442868667  14.7367682  12.8706512467
15  2015  13.465904  16.5061231667  12.4424366333  11.0181384

如果inplace=True则原有数据块的相应行被删除

In [4]:
odata.drop(odata.index[[16,17]],inplace=True)
odata
Out[4]:
date  spring  summer  autumn  winter
0  2000  12.2338809  16.9073011333  15.6923831333  14.0859622333
1  2001  12.8474805667  16.7504687333  14.5140663667  13.5037456
2  2002  13.558175  17.2033926  15.6999475  13.2336524667
3  2003  12.6547247  16.8949153333  15.6614647  12.8434786667
4  2004  13.2537298  17.0469665667  15.2090537667  14.3647912
5  2005  13.4443049  16.7459822  16.6221879667  11.6108225667
6  2006  13.5056956667  16.8335785667  15.4979282  12.1993436333
7  2007  13.4885262333  16.6677328333  15.8170143667  13.7438216
8  2008  13.1515319  16.4865069333  15.7295728667  12.9323358667
9  2009  13.4577154333  16.6392378333  18.2601799667  12.6531594333
10  2010  13.1945485  16.7286889  15.4263526667  13.8833583
11  2011  14.3477941667  16.6894210333  14.1765804333  12.3665419667
12  2012  13.6050867  17.1305677333  14.7179677667  13.2925524333
13  2013  13.0279078667  17.3861934333  16.2034549667  13.1861213333
14  2014  12.7466816333  16.5442868667  14.7367682  12.8706512467
15  2015  13.465904  16.5061231667  12.4424366333  11.0181384

删除列

del方法

In [5]:
del odata['date']
odata
Out[5]:
spring  summer  autumn  winter
0  12.2338809  16.9073011333  15.6923831333  14.0859622333
1  12.8474805667  16.7504687333  14.5140663667  13.5037456
2  13.558175  17.2033926  15.6999475  13.2336524667
3  12.6547247  16.8949153333  15.6614647  12.8434786667
4  13.2537298  17.0469665667  15.2090537667  14.3647912
5  13.4443049  16.7459822  16.6221879667  11.6108225667
6  13.5056956667  16.8335785667  15.4979282  12.1993436333
7  13.4885262333  16.6677328333  15.8170143667  13.7438216
8  13.1515319  16.4865069333  15.7295728667  12.9323358667
9  13.4577154333  16.6392378333  18.2601799667  12.6531594333
10  13.1945485  16.7286889  15.4263526667  13.8833583
11  14.3477941667  16.6894210333  14.1765804333  12.3665419667
12  13.6050867  17.1305677333  14.7179677667  13.2925524333
13  13.0279078667  17.3861934333  16.2034549667  13.1861213333
14  12.7466816333  16.5442868667  14.7367682  12.8706512467
15  13.465904  16.5061231667  12.4424366333  11.0181384

.pop()方法

.pop方法可以将所选列从原数据块中弹出,原数据块不再保留该列

In [6]:
spring = odata.pop('spring')
spring
Out[6]:
0    12.2338809
1   12.8474805667
2     13.558175
3    12.6547247
4    13.2537298
5    13.4443049
6   13.5056956667
7   13.4885262333
8    13.1515319
9   13.4577154333
10    13.1945485
11  14.3477941667
12    13.6050867
13  13.0279078667
14  12.7466816333
15    13.465904
Name: spring, dtype: object
In [7]:
odata
Out[7]:
summer  autumn  winter
0  16.9073011333  15.6923831333  14.0859622333
1  16.7504687333  14.5140663667  13.5037456
2  17.2033926  15.6999475  13.2336524667
3  16.8949153333  15.6614647  12.8434786667
4  17.0469665667  15.2090537667  14.3647912
5  16.7459822  16.6221879667  11.6108225667
6  16.8335785667  15.4979282  12.1993436333
7  16.6677328333  15.8170143667  13.7438216
8  16.4865069333  15.7295728667  12.9323358667
9  16.6392378333  18.2601799667  12.6531594333
10  16.7286889  15.4263526667  13.8833583
11  16.6894210333  14.1765804333  12.3665419667
12  17.1305677333  14.7179677667  13.2925524333
13  17.3861934333  16.2034549667  13.1861213333
14  16.5442868667  14.7367682  12.8706512467
15  16.5061231667  12.4424366333  11.0181384

.drop()方法

drop方法既可以保留原数据块中的所选列,也可以删除,这取决于参数inplace

In [8]:
withoutSummer = odata.drop(['summer'],axis=1)
withoutSummer
Out[8]:
autumn  winter
0  15.6923831333  14.0859622333
1  14.5140663667  13.5037456
2  15.6999475  13.2336524667
3  15.6614647  12.8434786667
4  15.2090537667  14.3647912
5  16.6221879667  11.6108225667
6  15.4979282  12.1993436333
7  15.8170143667  13.7438216
8  15.7295728667  12.9323358667
9  18.2601799667  12.6531594333
10  15.4263526667  13.8833583
11  14.1765804333  12.3665419667
12  14.7179677667  13.2925524333
13  16.2034549667  13.1861213333
14  14.7367682  12.8706512467
15  12.4424366333  11.0181384
In [9]:
odata
Out[9]:
summer  autumn  winter
0  16.9073011333  15.6923831333  14.0859622333
1  16.7504687333  14.5140663667  13.5037456
2  17.2033926  15.6999475  13.2336524667
3  16.8949153333  15.6614647  12.8434786667
4  17.0469665667  15.2090537667  14.3647912
5  16.7459822  16.6221879667  11.6108225667
6  16.8335785667  15.4979282  12.1993436333
7  16.6677328333  15.8170143667  13.7438216
8  16.4865069333  15.7295728667  12.9323358667
9  16.6392378333  18.2601799667  12.6531594333
10  16.7286889  15.4263526667  13.8833583
11  16.6894210333  14.1765804333  12.3665419667
12  17.1305677333  14.7179677667  13.2925524333
13  17.3861934333  16.2034549667  13.1861213333
14  16.5442868667  14.7367682  12.8706512467
15  16.5061231667  12.4424366333  11.0181384

当inplace=True时.drop()执行内部删除,不返回任何值,原数据发生改变

In [10]:
withoutWinter = odata.drop(['winter'],axis=1,inplace=True)
type(withoutWinter)
Out[10]:
NoneType
In [11]:
odata
Out[11]:
summer  autumne
0  16.9073011333  15.6923831333
1  16.7504687333  14.5140663667
2  17.2033926  15.6999475
3  16.8949153333  15.6614647
4  17.0469665667  15.2090537667
5  16.7459822  16.6221879667
6  16.8335785667  15.4979282
7  16.6677328333  15.8170143667
8  16.4865069333  15.7295728667
9  16.6392378333  18.2601799667
10  16.7286889  15.4263526667
11  16.6894210333  14.1765804333
12  17.1305677333  14.7179677667
13  17.3861934333  16.2034549667
14  16.5442868667  14.7367682
15  16.5061231667  12.4424366333

总结,不论是行删除还是列删除,也不论是原数据删除,还是输出新变量删除,.drop()的方法都能达到目的,为了方便好记,熟练操作,所以应该尽量多使用.drop()方法

Python 相关文章推荐
Python生成pdf文件的方法
Aug 04 Python
Python操作MySQL模拟银行转账
Mar 12 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
Nov 14 Python
Python 支付整合开发包的实现
Jan 23 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
Oct 28 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
python写文件时覆盖原来的实例方法
Jul 22 Python
Python执行时间的几种计算方法
Jul 31 Python
Python爬取网站图片并保存的实现示例
Feb 26 Python
Python学习开发之图形用户界面详解
Aug 23 Python
将字典转换为DataFrame并进行频次统计的方法
Apr 08 #Python
pandas创建新Dataframe并添加多行的实例
Apr 08 #Python
DataFrame中去除指定列为空的行方法
Apr 08 #Python
python 定时修改数据库的示例代码
Apr 08 #Python
对Python中DataFrame按照行遍历的方法
Apr 08 #Python
python2.6.6如何升级到python2.7.14
Apr 08 #Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 #Python
You might like
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
使用PyCharm进行远程开发和调试的实现
2019/11/04 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
Django配置跨域并开发测试接口
2020/11/04 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
英文简历中的自我评价
2013/10/06 职场文书
企业申诉管理制度
2014/01/30 职场文书
给小学生的新年寄语
2014/04/04 职场文书
学生会主席演讲稿
2014/04/25 职场文书
公司年会策划方案
2014/05/17 职场文书
体育比赛口号
2014/06/09 职场文书
公司授权委托书范文
2014/09/21 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
死亡诗社观后感
2015/06/05 职场文书
python基础之类属性和实例属性
2021/10/24 Python
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
再谈python_tkinter弹出对话框创建
2022/03/20 Python