本文通過一個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()方法
轉自:<a>http://www.jianshu.com/p/67e67c7034f6</a>