gpt4 book ai didi

python - Where 函数忽略 Nan

转载 作者:行者123 更新时间:2023-12-05 08:48:00 27 4
gpt4 key购买 nike

我试图在忽略 Nan 的同时使用 where 函数,我不想删除或替换 Nans。

这是一个玩具数据集:

df=pd.DataFrame({
'A':[8,39,40,52],
'B':[8,39,np.nan,50],
})

给出:

    A    B
0 8 8.0
1 39 39.0
2 40 NaN
3 52 50.0

期望的结果:

    A   B       check
0 8 8.0 True
1 39 39.0 True
2 40 NaN Nan
3 52 50.0 False

我尝试了下面的代码,但没有成功:

df = ((np.where(df['A']== df['B'], True, False))| df.isnull())

最佳答案

您可以在任一列中有 NaN 的地方使用掩码,然后使用 bool 掩码在其中插入 np.nan

m = df.isna().any(axis=1)
df['check'] = df['A'].eq(df['B'])
df.loc[m, 'check'] = np.nan # This would upcast bools to floats.

一种解决方法是使用 Series.astypecheck 列的 dtype 作为 object

m = df.isna().any(axis=1)
df['check'] = df['A'].eq(df['B'])
df['check'] = df['check'].astype(object)
df.loc[m, 'check'] = np.nan

A B check
0 8 8.0 True
1 39 39.0 True
2 40 NaN NaN
3 52 50.0 False

关于python - Where 函数忽略 Nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66679082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com