Кажется, есть причуда с функцией слияния панд. Он считает значения NaN
равными и объединяет NaN
с другими NaN
:
>>> foo = DataFrame([
['a',1,2],
['b',4,5],
['c',7,8],
[np.NaN,10,11]
], columns=['id','x','y'])
>>> bar = DataFrame([
['a',3],
['c',9],
[np.NaN,12]
], columns=['id','z'])
>>> pd.merge(foo, bar, how='left', on='id')
Out[428]:
id x y z
0 a 1 2 3
1 b 4 5 NaN
2 c 7 8 9
3 NaN 10 11 12
[4 rows x 4 columns]
Это не похоже ни на одну RDB, которую я видел, обычно отсутствующие значения обрабатываются с агностицизмом и не будут объединены вместе, как если бы они были равны. Это особенно проблематично для наборов данных с разреженными данными (каждый NaN будет объединен с каждым другим NaN, что приведет к огромному DataFrame!)
Есть ли способ игнорировать отсутствующие значения во время слияния, не вырезая их сначала?