1.删除/选取某列含有特殊数值的行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import pandas as pd import numpy as np a = np.array([[ 1 , 2 , 3 ],[ 4 , 5 , 6 ],[ 7 , 8 , 9 ]]) df1 = pd.dataframe(a,index = [ 'row0' , 'row1' , 'row2' ],columns = list ( 'abc' )) print (df1) df2 = df1.copy() #删除/选取某列含有特定数值的行 #df1=df1[df1['a'].isin([1])] #df1[df1['a'].isin([1])] 选取df1中a列包含数字1的行 df1 = df1[~df1[ 'a' ].isin([ 1 ])] #通过~取反,选取不包含数字1的行 print (df1) |
运行结果:
2.删除/选取某行含有特殊数值的列
1
2
3
4
5
6
7
8
|
#删除/选取某行含有特定数值的列 cols = [x for i,x in enumerate (df2.columns) if df2.iat[ 0 ,i] = = 3 ] #利用enumerate对row0进行遍历,将含有数字3的列放入cols中 print (cols) #df2=df2[cols] 选取含有特定数值的列 df2 = df2.drop(cols,axis = 1 ) #利用drop方法将含有特定数值的列删除 print (df2) |
运行结果:
3.删除含有空值的行或列
实现思路:利用pandas.dateframe.fillna对空值赋予特定值,再利用上文介绍的方法找到这些含有特定值的行或列去除即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import pandas as pd import numpy as np df1 = pd.dataframe( [ [np.nan, 2 , np.nan, 0 ], [ 3 , 4 , np.nan, 1 ], [np.nan, np.nan, np.nan, 5 ], [np.nan, 3 , np.nan, 4 ] ],columns = list ( 'abcd' )) print (df1) df2 = df1.copy() df1[ 'a' ] = df1[ 'a' ].fillna( 'null' ) #将df中a列所有空值赋值为'null' print (df1) df1 = df1[~df1[ 'a' ].isin([ 'null' ])] print (df1) #删除某行空值所在列 df2[ 0 : 1 ] = df2[ 0 : 1 ].fillna( 'null' ) print (df2) cols = [x for i,x in enumerate (df2.columns) if df2.iat[ 0 ,i] = = 'null' ] print (cols) df2 = df2.drop(cols,axis = 1 ) print (df2) |
运行结果:
以上这篇pandas.dataframe删除/选取含有特定数值的行或列实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/luocheng7430/article/details/80330566