python - pandas 的过滤功能 - 在列中查看 NaN 值

我创建的函数:

#Create a function that identifies blank values
def GPID_blank(df, variable):
    df = df.loc[df['GPID'] == variable]
    return df

测试:

variable = ''
test = GPID_blank(df, variable)
test

目标:创建一个可以过滤任何数据帧列“GPID”的函数,以查看 GPID 缺少数据的所有行。

我已经尝试运行 variable = 'NaN' 但仍然没有成功。但是,我知道该函数有效,就像我使用现实生活中的变量“OH82CD85”一样,该函数会相应地过滤我的数据集。

因此,为什么它不过滤掉空白单元格 variable = 'NaN'?我知道对于我的数据集,有 5 行 GPID 缺少数据。

例子 df:

df = pd.DataFrame({'Client': ['A','B','C'], 'GPID':['BRUNS2','OH82CD85','']})

    Client  GPID
0   A   BRUNS2
1   B   OH82CD85
2   C   

GPID 列示例:

0     OH82CD85
1     BW07TI20
2     OW36HW81
3     PE56TA73
4     CT46SX81
5     OD79AU80
6     GF46DB60
7     OL07ST01
8     VP38SM57
9     AH90AE61
10    PG86KO78
11         NaN
12         NaN
13    SO21GR72
14    DY85IN90
15    KW80CV02
16    CM15QP83
17    VC38FP82
18    DA36RX05
19    DD74HD38

最佳答案

您不能将 == 与 NaN 一起使用。 NaN != NaN.

相反,您可以稍微修改您的函数以使用 pd.isna()(或 np.isnan())检查参数是否为 NaN:

def GPID_blank(df, variable):
    if pd.isna(variable):
        return df.loc[df['GPID'].isna()]
    else:
        return df.loc[df['GPID'] == variable]

https://stackoverflow.com/questions/70424842/

相关文章:

android - 我们如何保存和恢复 Android StateFlow 的状态?

ruby-on-rails - 无法使用 octokit 连接到 Github 帐户

ios - FaSTLane Match 环境变量未被 build_app 获取

javascript - Typescript reducer 的 switch case type

fortran - gfortran 与 MKL 的链接导致 'Intel MKL ERROR: P

python - 从云函数内部构建容器镜像

c++ - sfinae 与非类型模板参数的概念

pytorch - Pytorch 中软标签的交叉熵

angular - Auth0 Angular error during unit test : U

reactjs - 如何在 React 中使用 map 输出嵌套对象的内容?