Pandas 熊猫,对NaN应用简单函数返回值而不是NaN?
为b列返回我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 我真的希望
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