数据分析工具PANDAS技巧-如何删除数据帧的列
在本教程中,我们将介绍如何从pandas数据帧(dataframe)中删除或删除一个或多个列。
什么是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
参考资料
- python测试开发项目实战-目录
- python工具书籍下载-持续更新
- python 3.7极速入门教程 - 目录
- 原文地址
- 本文涉及的python测试开发库 谢谢点赞!
- [本文相关海量书籍下载](https://github.com/china-testing/python-api-tesing/blob/master/books.md
- https://www.listendata.com/2019/06/pandas-drop-columns-from-dataframe.html
按位置编号删除列?
>>> 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)}) # 讨论qq群630011153 144081101
>>> 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