Pandas numpy.where() 使用 - 没有得到想要的结果

Nis*_*jan 3 python numpy pandas

我正在尝试根据 NaN 值将两列合并到第三列

df['code2'] = np.where(df['code']==np.nan, df['code'], df['code1'])
Run Code Online (Sandbox Code Playgroud)

我只得到 code2 中 code1 列的值。结果如图所示输出图像

在此输入图像描述

请告诉我我正在编写的代码有什么问题。谢谢

jez*_*ael 6

我认为你需要isnull比较NaN

\n
df[\'code2\'] = np.where(df[\'code\'].isnull(), df[\'code\'], df[\'code1\'])\n
Run Code Online (Sandbox Code Playgroud)\n

文件

\n
\n

警告

\n

必须注意的是,在 python(和 numpy)中,nan 的 don\xe2\x80\x99t 比较相等,但 None 的比较相等。请注意,Pandas/numpy 使用 np.nan != np.nan 这一事实,并将 None 视为 np.nan。

\n
\n
In [11]: None == None\nOut[11]: True\n\nIn [12]: np.nan == np.nan\nOut[12]: False\n
Run Code Online (Sandbox Code Playgroud)\n
\n

因此,与上面相比,标量相等与 None/np.nan 的比较并不能提供有用的信息。

\n
\n
In [13]: df2[\'one\'] == np.nan\nOut[13]: \na    False\nb    False\nc    False\nd    False\ne    False\nf    False\ng    False\nh    False\nName: one, dtype: bool\n
Run Code Online (Sandbox Code Playgroud)\n