dataframe删除值

dataframe数据

import pandas as pd
import numpy as np
import copy

data=np.array([[1,6,3],[4,5,2],[9,0,7]])
dft=pd.DataFrame(data,index=['line0','line1','line2'],columns= ['a', 'b', 'c'])

dft
dft
       a  b  c
line0  1  6  3
line1  4  5  2
line2  9  0  7

dftc = copy.deepcopy(dft)
dftc
       a  b  c
line0  1  6  3
line1  4  5  2
line2  9  0  7


1.删除某列含有特定数值的行

#删除dftc 列a 值为1的行
#~表示取反
dftc1 = dftc[~dftc['a'].isin([1])]
dftc1
       a  b  c
line1  4  5  2
line2  9  0  7


#删除dftc 列b 值为0的行
dftc2 = dftc[~dftc['b'].isin([0])]
dftc2
       a  b  c
line0  1  6  3
line1  4  5  2

注:若某列没有包含要删除的值,则不做任何删除。


2.删除/选取某行/列含有特殊数值的列/行

1)删除/选取某行含有特殊数值的列

dftc.iat[0,1]
6

cols=[x for i,x in enumerate(dftc.columns) if dftc.iat[0,i]==6]
cols
['b']

dftc3=dftc.drop(cols,axis=1) 
dftc3
       a  c
line0  1  3
line1  4  2
line2  9  7


cols=[x for i,x in enumerate(dftc.columns) if dftc.iat[1,i]==2]
cols
['c']
dftc3=dftc.drop(cols,axis=1) 
dftc3
       a  b
line0  1  6
line1  4  5
line2  9  0

enumerate() 函数:用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标

enumerate(sequence, [start=0])
    sequence -- 一个序列、迭代器或其他支持迭代对象。
    start -- 下标起始位置。

df.drop(name,axis=1):删除指定行或列;name为单行/列名字符/多行/列列表。

dftc.drop(['a', 'b'],axis=1)
       c
line0  3
line1  2
line2  7

2)删除/选取某列含有特殊数值的行

rows=[x for i,x in enumerate(dftc.index) if dftc.iat[1,i]==2]
rows
['line2']
dftc3=dftc.drop(rows,axis=0) 
dftc3
       a  b  c
line0  1  6  3
line1  4  5  2

3.删除含有空值的行或列

df.dropna(axis=0, how='any', inplace=True)

    axis:0-行操作(默认),1-列操作
    how:any-只要有空值就删除(默认),all-全部为空值才删除
    inplace:False-返回新的数据集(默认),True-在愿数据集上操作

dftc4 = copy.deepcopy(dft)
dftc4.iloc[1,2] = np.nan
dftc4.iloc[1,0] = np.nan
dftc4.iloc[2,0] = np.nan

dftc5 = copy.deepcopy(dftc4)
dftc5
         a  b    c
line0  1.0  6  3.0
line1  NaN  5  NaN
line2  NaN  0  7.0


dftc4.dropna(axis=0, how='any', inplace=True)
dftc4
         a  b    c
line0  1.0  6  3.0

dftc5.dropna(axis=1, how='any', inplace=True)
dftc5
       b
line0  6

dftc5['a'].unique()
array([ 1., nan])

 

你可能感兴趣的:(Python基础知识,删除,dataframe)