我创建的函数:
#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/