【发布时间】:2019-05-10 08:50:47
【问题描述】:
我最近问了一个关于熊猫here 中缺失值的问题,并被定向到github issue。阅读完该页面和missing data documentation。
我想知道为什么 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()] 但我很好奇为什么NaNs 被排除在像groupby 这样的一些pandas 操作中而不是像merge、join、update 和@ 这样的其他操作中987654336@?
基本上,正如我上面所问的,为什么 merge 和 join 在比较不相等时匹配 np.nan?
【问题讨论】:
标签: python python-3.x pandas