我正在尝试根据NaN值将两列合并到第三列
df['code2'] = np.where(df['code']==np.nan, df['code'], df['code1'])
如果code2中的code1列,我只获取值。结果如图所示 输出图像
请告诉我我写的代码有什么问题。感谢
答案 0 :(得分:3)
我认为您需要isnull
来比较NaN
:
df['code2'] = np.where(df['code'].isnull(), df['code'], df['code1'])
Docs:
警告强>
必须注意的是,在python(和numpy)中,nan并不比较平等,但是没有。请注意,Pandas / numpy使用np.nan!= np.nan的事实,并像np.nan一样对待None。
In [11]: None == None
Out[11]: True
In [12]: np.nan == np.nan
Out[12]: False
因此,与上述相比,标量相等比较与None / np.nan无法提供有用的信息。
In [13]: df2['one'] == np.nan
Out[13]:
a False
b False
c False
d False
e False
f False
g False
h False
Name: one, dtype: bool
答案 1 :(得分:0)
检查值是否为nan的正确方法是使用np.isnan(val)
:
np.nan == np.nan
False
np.isnan(np.nan)
True
df = pd.DataFrame({'a': [np.nan, 1, 2]})
>>> np.isnan(df.a)
0 True
1 False
2 False
Name: a, dtype: bool