
根据 索引名 删除目标行。
当需要根据索引位置删除时,可以使用 index 属性来组合完成。
根据 列名 删除目标列,同时需要设置 axis=1 或者 columns 。
当需要根据列位置删除时,可以使用 columns 属性来组合完成。
删除列也可以用关键字 del 实现,每次只能删除一列,且删除列后,原数据发生改变。
同时删除行和列,需要为行使用 index 参数,为列使用 columns 参数。
当数据框有多重索引时,删除行时,需要设置 level 参数。
多重索引数据框同时删除行和列时,只能删除第一层索引和列。
dropna 为删除缺失值的方法。
默认会删除包含缺失值的所有行。
可设置 how , thresh , subset 参数控制删除的行为。
设置参数 axis=1 或者 axis=columns 删除缺失列。
同样,可以设置 how , thresh , subset 参数来控制删除缺失列的行为。
删除重复值用 drop_duplicates 方法实现。
设置 subset 参数,根据列删除重复行。
设置 ignore_index=True 可以对删除重复行后的数据索引重排序。
1、删除一列:
Del df[column] ->df的列直接被删除;
Df.drop(col,axis=1) ->删除一列,不改变原df,重新赋值一个新的df
Df.drop(col,axis=1,inplace=True) ->直接改变原df的值
2、查看df每列数据类型:
Df[col].dtype==‘object’ == True
Df[col].dtype==‘int’ == True
Df[col].dtype==‘float’ == True
3、强制修改df某列类型:
Df[col]=df[col].astype(float) ->将col列改为float类型
4、DataFrame中方差为0的列:
Series=df.var() ## 获取方差series
Lst_col=Series[Series.values == 0].index.tolist()
5、打印异常
try:
Execute()
Exception as err:
Print(err)
一、drop()方法
1、df.drop()删除一行或一列
print(df.isnull().sum()) #查看空值汇总
df.drop(labels=None,index=None,columns=None) #labels参数指定要删除的行或列的名字,index参数指定要删除的行,columns参数指定要删除的列,用列表给定。
df.drop(labels=[0,2],axis=0) #删除1-2行。
df.drop(labels=[0,2],axis=1) #删除1-2列。
df.drop(['列标签'],axis=1)#删除指定列标签的列,如果是单列可以直接用列名。
df.drop(['航标签'])#删除指定行标签的行,如果是单行可以直接用行名。
2、axis参数值有两个,0表示删除行,为默认值;1表示删除列。
3、inplace参数值有两个,False表示返回一个新值,不修改原数据,为默认值;Ture表示在原来的数据基础上修改,除非确认要修改原数据,要慎用。
4、删除指定条件的行
(1)按行遍历指定符合条件的行索引
index_list=[]
for index, row_data in df.interrows():
if row_data['列标签']==‘指定条件’:
index_list.append(index)
(2)删除指定行
df1=df.drop(index_list,axis=0)
df1
(3)或者用列表表达式
index_list=[index for index, row_data in df.interrows() if row_data['列标签']==‘指定条件’]
df1=df.drop(index_list,axis=0)
df1
二、空值处理dropna()
1、删除整行或列
df1=df.dropna(axis=0)或df.dropna() #删除含有NAN的行,不添加axis参数默认删除行。
df2=df.dropna(axis=1) #删除含有NAN的列。
2、对空值进行填充
(1)使用常数填充
df3=df.fillna(0)
(2)用列的平均值填充
df4=df.fillna(df.mean())
(3)用列的前一个数值填充
df5=df.fillna(method=ffill,axis=1)
(4)用行的前一个数值填充
df5=df.fillna(method=ffill,axis=0)
三、移除重复数据
1、参数说明
df.drop_duplicates()方法的subset参数为所有列(默认),后指定列keep参数为first(默认)、last和False;inplace参数为False(默认)和Ture。
df6=df.duplicated()#返回值为Ture和False
2、删除所有列都相同的行
df7=df.drop_duplicates() #删除所有列都相同的行,最常用的方式。
df.reset_index(drop=True) #重建索引
3、删除指定列值相同的行
df7=df.drop_duplicates(subset=['列名'],keep='first',inplace=False)#列名表示的是对比的列
df.reset_index(drop=True) #重建索引
四、计算两列值得到一新列值
1、使用列标签筛选,直接计算
df['新列标签']=df['第一列标签']*df['第一列标签']
2、使用位置索引遍历,每对值单独计算
for i in range(len(df['第一列标签'])):
df['新列标签'].iloc[i]=df['第一列标签'].iloc[i]*df['第一列标签'].iloc[i]
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)