python--pandas删除

python--pandas删除,第1张

drop 方法是pandas中删除行或列的方法。

根据 索引名 删除目标行。

当需要根据索引位置删除时,可以使用 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]


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11900054.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存