使用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]: importnumpyasnp importpandasaspd odata=pd.read_csv('example.csv') odata Out[1]: datespringsummerautumnwinter 0200012.233880916.907301133315.692383133314.0859622333 1200112.847480566716.750468733314.514066366713.5037456 2200213.55817517.203392615.699947513.2336524667 3200312.654724716.894915333315.661464712.8434786667 4200413.253729817.046966566715.209053766714.3647912 5200513.444304916.745982216.622187966711.6108225667 6200613.505695666716.833578566715.497928212.1993436333 7200713.488526233316.667732833315.817014366713.7438216 8200813.151531916.486506933315.729572866712.9323358667 9200913.457715433316.639237833318.260179966712.6531594333 10201013.194548516.728688915.426352666713.8833583 11201114.347794166716.689421033314.176580433312.3665419667 12201213.605086717.130567733314.717967766713.2925524333 13201313.027907866717.386193433316.203454966713.1861213333 14201412.746681633316.544286866714.736768212.8706512467 15201513.46590416.506123166712.442436633311.0181384 16seasonspringsummerautumnwinter 17slope0.037969137402-0.0116468916667-0.0791384411275-0.0776527455294
.drop()方法如果不设置参数inplace=True,则只能在生成的新数据块中实现删除效果,而不能删除原有数据块的相应行。
In[2]: data=odata.drop([16,17]) odata Out[2]: datespringsummerautumnwinter 0200012.233880916.907301133315.692383133314.0859622333 1200112.847480566716.750468733314.514066366713.5037456 2200213.55817517.203392615.699947513.2336524667 3200312.654724716.894915333315.661464712.8434786667 4200413.253729817.046966566715.209053766714.3647912 5200513.444304916.745982216.622187966711.6108225667 6200613.505695666716.833578566715.497928212.1993436333 7200713.488526233316.667732833315.817014366713.7438216 8200813.151531916.486506933315.729572866712.9323358667 9200913.457715433316.639237833318.260179966712.6531594333 10201013.194548516.728688915.426352666713.8833583 11201114.347794166716.689421033314.176580433312.3665419667 12201213.605086717.130567733314.717967766713.2925524333 13201313.027907866717.386193433316.203454966713.1861213333 14201412.746681633316.544286866714.736768212.8706512467 15201513.46590416.506123166712.442436633311.0181384 16seasonspringsummerautumnwinter 17slope0.037969137402-0.0116468916667-0.0791384411275-0.0776527455294 In[3]: data Out[3]: datespringsummerautumnwinter 0200012.233880916.907301133315.692383133314.0859622333 1200112.847480566716.750468733314.514066366713.5037456 2200213.55817517.203392615.699947513.2336524667 3200312.654724716.894915333315.661464712.8434786667 4200413.253729817.046966566715.209053766714.3647912 5200513.444304916.745982216.622187966711.6108225667 6200613.505695666716.833578566715.497928212.1993436333 7200713.488526233316.667732833315.817014366713.7438216 8200813.151531916.486506933315.729572866712.9323358667 9200913.457715433316.639237833318.260179966712.6531594333 10201013.194548516.728688915.426352666713.8833583 11201114.347794166716.689421033314.176580433312.3665419667 12201213.605086717.130567733314.717967766713.2925524333 13201313.027907866717.386193433316.203454966713.1861213333 14201412.746681633316.544286866714.736768212.8706512467 15201513.46590416.506123166712.442436633311.0181384
如果inplace=True则原有数据块的相应行被删除
In[4]: odata.drop(odata.index[[16,17]],inplace=True) odata Out[4]: datespringsummerautumnwinter 0200012.233880916.907301133315.692383133314.0859622333 1200112.847480566716.750468733314.514066366713.5037456 2200213.55817517.203392615.699947513.2336524667 3200312.654724716.894915333315.661464712.8434786667 4200413.253729817.046966566715.209053766714.3647912 5200513.444304916.745982216.622187966711.6108225667 6200613.505695666716.833578566715.497928212.1993436333 7200713.488526233316.667732833315.817014366713.7438216 8200813.151531916.486506933315.729572866712.9323358667 9200913.457715433316.639237833318.260179966712.6531594333 10201013.194548516.728688915.426352666713.8833583 11201114.347794166716.689421033314.176580433312.3665419667 12201213.605086717.130567733314.717967766713.2925524333 13201313.027907866717.386193433316.203454966713.1861213333 14201412.746681633316.544286866714.736768212.8706512467 15201513.46590416.506123166712.442436633311.0181384
删除列
del方法
In[5]: delodata['date'] odata Out[5]: springsummerautumnwinter 012.233880916.907301133315.692383133314.0859622333 112.847480566716.750468733314.514066366713.5037456 213.55817517.203392615.699947513.2336524667 312.654724716.894915333315.661464712.8434786667 413.253729817.046966566715.209053766714.3647912 513.444304916.745982216.622187966711.6108225667 613.505695666716.833578566715.497928212.1993436333 713.488526233316.667732833315.817014366713.7438216 813.151531916.486506933315.729572866712.9323358667 913.457715433316.639237833318.260179966712.6531594333 1013.194548516.728688915.426352666713.8833583 1114.347794166716.689421033314.176580433312.3665419667 1213.605086717.130567733314.717967766713.2925524333 1313.027907866717.386193433316.203454966713.1861213333 1412.746681633316.544286866714.736768212.8706512467 1513.46590416.506123166712.442436633311.0181384
.pop()方法
.pop方法可以将所选列从原数据块中弹出,原数据块不再保留该列
In[6]: spring=odata.pop('spring') spring Out[6]: 012.2338809 112.8474805667 213.558175 312.6547247 413.2537298 513.4443049 613.5056956667 713.4885262333 813.1515319 913.4577154333 1013.1945485 1114.3477941667 1213.6050867 1313.0279078667 1412.7466816333 1513.465904 Name:spring,dtype:object In[7]: odata Out[7]: summerautumnwinter 016.907301133315.692383133314.0859622333 116.750468733314.514066366713.5037456 217.203392615.699947513.2336524667 316.894915333315.661464712.8434786667 417.046966566715.209053766714.3647912 516.745982216.622187966711.6108225667 616.833578566715.497928212.1993436333 716.667732833315.817014366713.7438216 816.486506933315.729572866712.9323358667 916.639237833318.260179966712.6531594333 1016.728688915.426352666713.8833583 1116.689421033314.176580433312.3665419667 1217.130567733314.717967766713.2925524333 1317.386193433316.203454966713.1861213333 1416.544286866714.736768212.8706512467 1516.506123166712.442436633311.0181384
.drop()方法
drop方法既可以保留原数据块中的所选列,也可以删除,这取决于参数inplace
In[8]: withoutSummer=odata.drop(['summer'],axis=1) withoutSummer Out[8]: autumnwinter 015.692383133314.0859622333 114.514066366713.5037456 215.699947513.2336524667 315.661464712.8434786667 415.209053766714.3647912 516.622187966711.6108225667 615.497928212.1993436333 715.817014366713.7438216 815.729572866712.9323358667 918.260179966712.6531594333 1015.426352666713.8833583 1114.176580433312.3665419667 1214.717967766713.2925524333 1316.203454966713.1861213333 1414.736768212.8706512467 1512.442436633311.0181384 In[9]: odata Out[9]: summerautumnwinter 016.907301133315.692383133314.0859622333 116.750468733314.514066366713.5037456 217.203392615.699947513.2336524667 316.894915333315.661464712.8434786667 417.046966566715.209053766714.3647912 516.745982216.622187966711.6108225667 616.833578566715.497928212.1993436333 716.667732833315.817014366713.7438216 816.486506933315.729572866712.9323358667 916.639237833318.260179966712.6531594333 1016.728688915.426352666713.8833583 1116.689421033314.176580433312.3665419667 1217.130567733314.717967766713.2925524333 1317.386193433316.203454966713.1861213333 1416.544286866714.736768212.8706512467 1516.506123166712.442436633311.0181384
当inplace=True时.drop()执行内部删除,不返回任何值,原数据发生改变
In[10]: withoutWinter=odata.drop(['winter'],axis=1,inplace=True) type(withoutWinter) Out[10]: NoneType In[11]: odata Out[11]: summerautumne 016.907301133315.6923831333 116.750468733314.5140663667 217.203392615.6999475 316.894915333315.6614647 417.046966566715.2090537667 516.745982216.6221879667 616.833578566715.4979282 716.667732833315.8170143667 816.486506933315.7295728667 916.639237833318.2601799667 1016.728688915.4263526667 1116.689421033314.1765804333 1217.130567733314.7179677667 1317.386193433316.2034549667 1416.544286866714.7367682 1516.506123166712.4424366333
总结,不论是行删除还是列删除,也不论是原数据删除,还是输出新变量删除,.drop()的方法都能达到目的,为了方便好记,熟练操作,所以应该尽量多使用.drop()方法