我最近在这里问了一个关于 pandas 中缺失值的问题,并被定向到一个github 问题。通读该页面和丢失的数据文档后。
我很奇怪,为什么merge和join治疗的NaN作为比赛时“都比不上等于”:np.nan != np.nan
# merge example
df = pd.DataFrame({'col1':[np.nan, 'match'], 'col2':[1,2]})
df2 = pd.DataFrame({'col1':[np.nan, 'no match'], 'col3':[3,4]})
pd.merge(df,df2, on='col1')
col1 col2 col3
0 NaN 1 3
# join example with same dataframes from above
df.set_index('col1').join(df2.set_index('col1'))
col2 col3
col1
NaN 1 3.0
match 2 NaN
但是,groupby排除了NaN :
df = pd.DataFrame({'col1':[np.nan, 'match', np.nan], 'col2':[1,2,1]})
df.groupby('col1').sum()
col2
col1
match 2
当然你可以dropna(),df[df['col1'].notnull()]但我很好奇为什么 NaN 被排除在一些 Pandas 操作中,groupby而不是像merge, join, update, 和map?
从本质上讲,正如我上面问,为什么不merge和join匹配np.nan时,他们不这样做比较相等?
相关分类