gpt4 book ai didi

python - 当 np.nan 设置为默认值时,为什么 np.select 返回 'nan' 作为字符串而不是 np.nan?

转载 作者:行者123 更新时间:2023-12-02 16:20:50 28 4
gpt4 key购买 nike

我正在使用 np.select 根据应用于其他列的多个条件创建一个新列。这是一个简单的例子:

df = pd.DataFrame({'A': [0, 3, 4], 'B': [10, 0, 2]})

mask1 = (df['A'] == 0)
mask2 = (df['A'] == 4)

df = df.assign(C = np.select([mask1, mask2], ['Cond1', 'Cond2'], default=np.nan))

使用 np.select 我期望如果两个条件都不满足,我应该在 'C' 列中得到一个 np.nan 值,但是当我使用 df.isna().sum() 在数据框中查找 NaN 我没有找到。

我已经尝试查找此内容,但似乎找不到答案。我在这里缺少什么?

最佳答案

值得一提的是 pandas 有它自己的 arrays (它们建立在 numpy 数组之上),但有一个通用的缺失值指示器 pd.NA(注意:它仍然是 experimental )。

所以要使用 pandas 数组,我们可以这样做:

mask1 = (df['A'] == 0)
mask2 = (df['A'] == 4)

c = np.select([mask1, mask2], ['Cond1', 'Cond2'], default=pd.NA)
df = df.assign(C=c).convert_dtypes()
   A   B      C
0 0 10 Cond1
1 3 0 <NA>
2 4 2 Cond2

然后如果我们检查数据类型,我们会发现我们正在使用 pandas 数组:

A     Int64
B Int64
C string
dtype: object

关于python - 当 np.nan 设置为默认值时,为什么 np.select 返回 'nan' 作为字符串而不是 np.nan?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65549706/

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