1

我有一个名为 df 的数据框:

     col1    col2
      1       2
      3       3
      7       8
      5       2
     12       8
      5       None

我想使用 pandas.series.isin 过滤数据框,我想过滤来自 df 的数据,其中 col2 只包含数字 2,8 和 None,所以新的数据框是:

     col1    col2
      1       2
      7       8
      5       2
     12       8
      5       None

我试过了:

filter1 = [2,8,'None']
filter2 = [2,8,np.nan]
filter3 = [2,8,'']

df.col2.isin(filter1)
df.col2.isin(filter2)
df.col2.isin(filter3)

结果总是:

     col1    col2
      1       2
      7       8
      5       2
     12       8

似乎我无法确定什么是 None 以及如何将其包含到过滤器中。

4

2 回答 2

3

如果要包含任何空值:

filter = df['col2'].isin([2,8]) | df['col2'].isnull()
df_filtered = df.loc[filter]
于 2020-08-03T12:39:32.083 回答
2

在过滤器中传递 None 时排除 ''

filter1 = [2,8,None]
于 2020-08-03T12:33:07.277 回答