Pandas.DataFrame删除行和列

作者: 16926b49840e | 来源:发表于2016-08-17 12:39 被阅读63509次

    本文通过一个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()方法

    相关文章

      网友评论

        本文标题:Pandas.DataFrame删除行和列

        本文链接:https://www.haomeiwen.com/subject/svemsttx.html