最近,我问了一个关于Pandas here中缺失值的问题,并直接联系了github issue.读完那一页和missing data documentation页之后.
我想知道为什么merge
和join
在"他们不相等"的情况下将南斯视为一对: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
名中的非符合项不包括:
df = pd.DataFrame({'col1':[np.nan, 'match', np.nan], 'col2':[1,2,1]})
df.groupby('col1').sum()
col2
col1
match 2
当然,你可以 Select dropna()
或df[df['col1'].notnull()]
,但我很好奇,为什么在一些Pandas 行动中,比如groupby
,而不是merge
、join
、update
和map
,会排除南部?
基本上,正如我在上面所问的,为什么merge
和join
在不相等的情况下与np.nan
匹配?