我想兩列合併成基礎上,NaN的第三列所期望的結果值熊貓numpy.where()使用 - 沒有得到
df['code2'] = np.where(df['code']==np.nan, df['code'], df['code1'])
我得到只有在值,如果編碼1列碼2。其結果是在圖像輸出 圖片即將如圖
請告訴我什麼是錯在我寫的代碼。由於
我想兩列合併成基礎上,NaN的第三列所期望的結果值熊貓numpy.where()使用 - 沒有得到
df['code2'] = np.where(df['code']==np.nan, df['code'], df['code1'])
我得到只有在值,如果編碼1列碼2。其結果是在圖像輸出 圖片即將如圖
請告訴我什麼是錯在我寫的代碼。由於
我認爲你需要isnull
比較NaN
:
df['code2'] = np.where(df['code'].isnull(), df['code'], df['code1'])
Docs:
警告
一個人必須銘記,在Python(和numpy的)時,南的不相等,但沒有。請注意,Pandas/numpy使用np.nan!= np.nan這一事實,並將np.nan等視爲無。
In [11]: None == None
Out[11]: True
In [12]: np.nan == np.nan
Out[12]: False
所以相比於以上,標量相等比較對一個無/ 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
正確的方法來檢查,如果值是男是使用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
非常感謝,現在的工作:) –