that's very weird, and dtype doesn't effect it. Guess I still don't totally understand numpy + nan. 

Anyways, I'd suggest tweaking what you have below to:

```python
mask_left = pd.isnull(left)
mask_right = pd.isnull(right)
(mask_left & mask_right).all()
((left == right) | mask_left).all()
```