数据分析工具PANDAS技巧-如何删除数据帧的列

作者: python测试开发 | 来源:发表于2019-08-15 10:24 被阅读22次

    数据分析工具PANDAS技巧-如何删除数据帧的列

    在本教程中,我们将介绍如何从pandas数据帧(dataframe)中删除或删除一个或多个列。

    图片.png

    什么是pandas ?

    pandas是一个用于数据操作的python包。 它具有以下数据任务的多个功能:

    • 删除或保留行和列
    • 按一列或多列汇总数据
    • 对数据进行排序或重新排序
    • 合并或附加多个数据帧
    • 用于处理文本数据的字符串函数
    • DateTime用于处理日期或时间格式列的函数

    导入或加载Pandas库

    >>> import pandas as pd
    >>> import numpy as np
    >>> df = pd.DataFrame(np.random.randn(6, 4), columns=list('ABCD'))
    >>> df
              A         B         C         D
    0  0.234760  0.408970  0.294589 -0.283262
    1  0.949531  0.021386  1.708693 -1.175214
    2 -0.193982 -1.012922  0.453042  1.850156
    3 -0.849963 -1.164284  0.438106  0.637801
    4 -0.511291 -1.536829 -1.545748 -1.691566
    5  0.762898  0.129889 -0.020672 -1.665944
    

    删除一列

    在pandas中,drop( )函数用于删除列。 axis=1告诉Python在列而不是行上应用函数。

    >>> df.drop(['A'], axis=1)
              B         C         D
    0  0.408970  0.294589 -0.283262
    1  0.021386  1.708693 -1.175214
    2 -1.012922  0.453042  1.850156
    3 -1.164284  0.438106  0.637801
    4 -1.536829 -1.545748 -1.691566
    5  0.129889 -0.020672 -1.665944
    >>> newdf = df.drop(['A'], axis=1)
    >>> df.drop(['A'], axis=1, inplace=True)
    >>> df.columns
    Index(['B', 'C', 'D'], dtype='object')
    

    删除Python中的多个列

    >>> df.drop(['B','C'], axis=1)
              D
    0 -0.283262
    1 -1.175214
    2  1.850156
    3  0.637801
    4 -1.691566
    5 -1.665944
    

    参考资料

    按位置编号删除列?

    >>> df.drop(df.columns[0], axis =1)
              C         D
    0  0.294589 -0.283262
    1  1.708693 -1.175214
    2  0.453042  1.850156
    3  0.438106  0.637801
    4 -1.545748 -1.691566
    5 -0.020672 -1.665944
    >>> cols = [0,2]
    >>> df.drop(df.columns[cols], axis =1)
              C
    0  0.294589
    1  1.708693
    2  0.453042
    3  0.438106
    4 -1.545748
    5 -0.020672
    

    按名称模式删除列

    >>> df = pd.DataFrame({"X1":range(1,6),"X_2":range(2,7),"YX":range(3,8),"Y_1":range(2,7),"Z":range(5,10)})
    >>> df
       X1  X_2  YX  Y_1  Z
    0   1    2   3    2  5
    1   2    3   4    3  6
    2   3    4   5    4  7
    3   4    5   6    5  8
    4   5    6   7    6  9
    >>> df.loc[:,~df.columns.str.contains('^X')]
       YX  Y_1  Z
    0   3    2  5
    1   4    3  6
    2   5    4  7
    3   6    5  8
    4   7    6  9
    >>> df.drop(df.columns[df.columns.str.contains('^X')], axis=1)
       YX  Y_1  Z
    0   3    2  5
    1   4    3  6
    2   5    4  7
    3   6    5  8
    4   7    6  9
    >>> df.loc[:,~df.columns.str.contains('X')]
       Y_1  Z
    0    2  5
    1    3  6
    2    4  7
    3    5  8
    4    6  9
    >>> df.loc[:,~df.columns.str.contains('X|Y')]
       Z
    0  5
    1  6
    2  7
    3  8
    4  9
    >>> df.loc[:,~df.columns.str.contains('X$')]
       X1  X_2  Y_1  Z
    0   1    2    2  5
    1   2    3    3  6
    2   3    4    4  7
    3   4    5    5  8
    4   5    6    6  9
    
    

    按缺失比例删除

    >>> df = pd.DataFrame({'A':[1,3,np.nan,5,np.nan], 'B':[4,np.nan,np.nan,5,np.nan]})
    >>> df
         A    B
    0  1.0  4.0
    1  3.0  NaN
    2  NaN  NaN
    3  5.0  5.0
    4  NaN  NaN
    >>> cols = df.columns[df.isnull().mean()>0.5]
    >>> df.drop(cols, axis=1)
         A
    0  1.0
    1  3.0
    2  NaN
    4  NaN
    3  5.0
    

    相关文章

      网友评论

        本文标题:数据分析工具PANDAS技巧-如何删除数据帧的列

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