Pandas 熊猫,对NaN应用简单函数返回值而不是NaN?

Pandas 熊猫,对NaN应用简单函数返回值而不是NaN?,pandas,pandas-apply,Pandas,Pandas Apply,为b列返回我False,而我想得到NaN import pandas as pd import numpy as np pd.DataFrame( {'a':[0,1,2,3], 'b':[np.nan, np.nan, np.nan,3]} ).apply(lambda x: x> 1) 期望 a b 0 False False 1 False False 2 True False 3 True True 我真的希望

为b列返回我
False
,而我想得到NaN

import pandas as pd
import numpy as np

pd.DataFrame(
  {'a':[0,1,2,3],
   'b':[np.nan, np.nan, np.nan,3]}
).apply(lambda x: x> 1)
期望

    a       b
0   False   False
1   False   False
2   True    False
3   True    True
我真的希望我的算术能够跟踪我在哪里有数据,在哪里没有数据,我如何才能做到这一点?

使用或与或:

为获得更好的性能,请避免应用

df = df.apply(lambda x: x> 1).mask(df.isna())
#df = df.apply(lambda x: x> 1).where(df.notna())
最后用途:

df=df.astype('boolean')
打印(df)
a b
0错误
1错误
2正确
3对对对
df = df.apply(lambda x: x> 1).mask(df.isna())
#df = df.apply(lambda x: x> 1).where(df.notna())
df = (df > 1).mask(df.isna())
#df = (df > 1).where(df.notna())

print (df)
       a    b
0  False  NaN
1  False  NaN
2   True  NaN
3   True  1.0
df = df.astype('boolean')
print (df)
       a     b
0  False  <NA>
1  False  <NA>
2   True  <NA>
3   True  True