pandas.DataFrame删除行和列

简介:

本文通过一个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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

想要删除最后两行
.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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

如果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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

删除列

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

.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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

.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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

当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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

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

转自:http://blog.csdn.net/weiyongle1996/article/details/77984485?skintest=skin3-template-test

目录
相关文章
|
7月前
|
机器学习/深度学习 Python
pandas将dataframe列中的list转换为多列
在应用机器学习的过程中,很大一部分工作都是在做数据的处理,一个非常常见的场景就是将一个list序列的特征数据拆成多个单独的特征数据。
142 0
dataframe获取指定列
dataframe获取指定列
780 0
|
3月前
|
SQL 索引 Python
Pandas中DataFrame合并的几种方法
Pandas中DataFrame合并的几种方法
203 0
|
4月前
|
索引 Python
如何在 Pandas 数据框中添加新列?
【8月更文挑战第30天】
387 4
|
3月前
|
数据采集 数据挖掘 数据处理
Pandas技巧:如何将一列数据轻松分隔为两列
Pandas技巧:如何将一列数据轻松分隔为两列
142 0
|
3月前
|
数据采集 机器学习/深度学习 数据处理
DataFrame 操作
DataFrame 操作
124 1
|
4月前
|
索引 Python
Pandas 中的重新索引
【8月更文挑战第30天】
61 1
|
4月前
|
存储 关系型数据库 数据库
如何在 Pandas 中合并数据框?
【8月更文挑战第30天】
23 0
|
存储 数据处理 索引
【如何在 Pandas DataFrame 中插入一列】
【如何在 Pandas DataFrame 中插入一列】
160 0
|
7月前
|
索引 Python
pandas读取某列、某行数据——loc、iloc用法总结
pandas读取某列、某行数据——loc、iloc用法总结
726 2