为什么熊猫会在 NaN 上合并?

我最近在这里问了一个关于 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时,他们不这样做比较相等?


精慕HU
浏览 192回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python