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简单优美高效。