[在Python中使用apply和lambda保留NaN值

问题描述 投票:0回答:1

我正在使用python,在A列中有一个值列表,其中包括一些NaN值。我需要将它们编码为1和0,具体取决于它们是高于还是低于中位数(0.4)。我尝试了下面的代码,效果很好

df["A_median"] = (df["A"].apply(lambda count: 0 if count<median_a else 1))

但是它给我的NaN值是1,而不是保留它们。

  A   A_median
36.6  1
NaN   1
NaN   1
0.1   0

决赛桌应该如下

  A   A_median
36.6  1
NaN   NaN
NaN   NaN
7     0

关于如何解决此问题的任何想法?

谢谢

python pandas lambda apply
1个回答
1
投票

是:

median_a = 0.4
df['A_median'] = (df['A'] > median_a).where(df.A.notna())

输出:

      A  A_median
0  36.6       1.0
1   NaN       NaN
2   NaN       NaN
3   0.1       0.0
© www.soinside.com 2019 - 2024. All rights reserved.