如何在python中同时使用applymap、lambda和dataframe来过滤/修改dataframe?

如何在python中同时使用applymap、lambda和dataframe来过滤/修改dataframe?,python,function,pandas,lambda,Python,Function,Pandas,Lambda,所以我正试图找出如何替换pd.DataFrame中的NaN? 在本例中,我创建了3x3数据帧,其值为df[1][2]=“a”,其余为NaN 我的理解是,我可以使用if和inlambda并执行以下操作。但是结果并不是我所期望的,它覆盖了'a'。我仍然希望'a'保持原样,只更改为'o'哪里是NaN。。。如有任何建议,将不胜感激 您可以使用fillna,而不是使用apply df.fillna('o') 有关的详细信息。您还可以将apply与@Psidom answer中的pd.isnull()一

所以我正试图找出如何替换
pd.DataFrame
中的
NaN
? 在本例中,我创建了3x3数据帧,其值为
df[1][2]=“a”
,其余为
NaN

我的理解是,我可以使用
if
和in
lambda
并执行以下操作。但是结果并不是我所期望的,它覆盖了
'a'
。我仍然希望
'a'
保持原样,只更改为
'o'
哪里是
NaN
。。。如有任何建议,将不胜感激


您可以使用
fillna
,而不是使用
apply

df.fillna('o')

有关的详细信息。您还可以将
apply
与@Psidom answer中的
pd.isnull()一起使用。但是在这种情况下,您应该真正使用内置函数
fillna

np.nan
并不真正返回您期望的值,为了创建有效的谓词,您可以使用
pd.isnull

df = pd.DataFrame(index=range(0,3),columns=range(0,3))
df[1][2] = 'a'
f = lambda x: 'o' if pd.isnull(x) else x
df.applymap(f)

#   0   1   2
#0  o   o   o
#1  o   o   o
#2  o   a   o
要了解发生这种情况的原因,可以将
np.nan
转换为布尔值:

bool(np.nan)
# True
因此,它总是返回真值,因此数据帧中的所有值都将替换为
o

bool(np.nan)
# True