python数据分析人工智能机器学习软件测试Python专家之路工具癖

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

2019-08-15  本文已影响22人  python测试开发

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

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

图片.png

什么是pandas ?

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

导入或加载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
上一篇下一篇

猜你喜欢

热点阅读