pandas 某列查找、选取与删除某数

1.查找与选取

 

法1 循环比较

for x in df['id']:
    if x == 1:
        print('exsit')
        break

耗时:2.8s

如果不仅仅想确认存在,还想返回下标。

多用一个enumerate,或者用range进行循环即可。

 

 

法2 掩码运算

不仅能确认存在,存在时还能获得index。

q=mydf[mydf['id'] == 1].index.tolist()

if len(q)==0:
    print('not exsit')

耗时:0.16s

 

法3 set空间换时间

仅能确认“存在”,无法返回下标。

优点是速度很快。

#转为set
ss = set(df['id'])
if 1 in ss:
    print('exist')

耗时:0.01s

 

可见循环最慢,set最快,使用掩码运算次之。

 

 

2.删除

 

先介绍isin()函数,它可以达到与掩码运算相似的效果。

传入的参数必须是一个序列,比如list,如果值存在于这个序列中,返回True,否则False。

q=mydf[mydf['id'].isin([1])].index.tolist()
if len(q)==0:
    print('not exsit')

 

法1 用set构建正样本集合

#用一个临时容器存储需要的值
temp = set(df['id'])

#假设我们想从id这列去掉1和2
temp.remove('1')
temp.remove('2')

#再用isin()调整即可
df = df[df['id'].isin(temp)]

耗时1.06s

 

法2 直接原地取反

通过取反,来表示不需要这两个数
df=df[~df1['A'].isin([1,2])]

耗时0.16s

显然法2简单优美高效。

 

你可能感兴趣的:(python)