我最近在这里问了一个关于大熊猫遗失值的问题,并且是针对github问题的.阅读完该页面和缺少的数据文档.
我想知道为什么merge并且join当"他们不比较平等"时将NaNs视为匹配: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
Run Code Online (Sandbox Code Playgroud)
但是,NaNs groupby排除在外:
df = pd.DataFrame({'col1':[np.nan, 'match', np.nan], 'col2':[1,2,1]})
df.groupby('col1').sum()
col2
col1
match 2
Run Code Online (Sandbox Code Playgroud)
当然你也可以dropna()或者df[df['col1'].notnull()]不过我很好奇,为什么NaN是排除像一些熊猫的操作groupby,而不是其他人一样merge,join …