如果特定列中的值不是pandas dataframe中的整数,则删除行

azu*_*ric 4 python pandas

如果我有一个数据帧并且想要删除任何行,其中一列中的值不是整数,我该怎么做?

另一种方法是,如果值不在0-2的范围内,则删除行,但由于我不知道如何做其中任何一个,我希望有些可能.

这是我尝试过的但是它不能确定原因:

df = df[(df['entrytype'] != 0) | (df['entrytype'] !=1) | (df['entrytype'] != 2)].all(1)
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 7

我建议有两种方法:

In [212]:

df = pd.DataFrame({'entrytype':[0,1,np.NaN, 'asdas',2]})
df
Out[212]:
  entrytype
0         0
1         1
2       NaN
3     asdas
4         2
Run Code Online (Sandbox Code Playgroud)

如果值的范围与您说的那样受限制,那么使用isin将是最快的方法:

In [216]:

df[df['entrytype'].isin([0,1,2])]
Out[216]:
  entrytype
0         0
1         1
4         2
Run Code Online (Sandbox Code Playgroud)

否则我们可以转换为str然后调用 .isdigit()

In [215]:

df[df['entrytype'].apply(lambda x: str(x).isdigit())]
Out[215]:
  entrytype
0         0
1         1
4         2
Run Code Online (Sandbox Code Playgroud)

  • 如果从 csv 加载,如果您不指定 dtype 或尝试强制 dtype,那么它会尝试猜测,如果您有非数字值,那么它可能会将它们更改为 str 类型,您的行中的错误值是什么?执行“df.convert_objects(convert_numeric=True)”然后调用“df.dropna()”可能会更快 (2认同)