1.删除/选取某列含有特殊数值的行
-
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.删除/选取某行含有特殊数值的列
-
#删除/选取某行含有特定数值的列
-
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对空值赋予特定值,再利用上文介绍的方法找到这些含有特定值的行或列去除即可。
-
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)
运行结果:
示例代码下载地址:https://download.csdn.net/download/luocheng7430/10488136