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