如何在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
和inlambda
并执行以下操作。但是结果并不是我所期望的,它覆盖了'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