通过过滤两个以上条件来提取行

时间:2019-12-27 06:54:43

标签: pandas

数据框在下面

name,id_number
Tom,ABC1234567
Mak,None
Sim,ABC
None,20110159893

情况

  1. 名称不应该None

  2. id_number不应None

  3. id_number不应小于4 numbers

预期中

df['out']

Tom,ABC1234567

如何编写函数并在一个条件下应用

2 个答案:

答案 0 :(得分:3)

boolean indexingSeries.notnaSeries.str.len结合使用,并通过Series.gt进行测试:

df = df[df['name'].notna() & df['id_number'].notna() & df['id_number'].str.len().gt(4)]
print (df)
  name   id_number
0  Tom  ABC1234567

替代:

df = df[df[['name','id_number']].notna().all(axis=1) & df['id_number'].str.len().gt(4)]

答案 1 :(得分:1)

you need,
df = df.replace('None',np.nan)
df[df.notnull().all(axis=1) & (df['id_number'].str.len() > 3) ]