BrandonFors/pandas-github-issues huggingface dataset:
ENH: .isnull and .notnull have been added as methods to Index to make this more consistent with the Series API
State: closed


Labels:
name: Enhancement
name: Indexing
description: Related to indexing on series/frames, not to indexes themselves
name: Missing-data
description: np.nan, pd.NaT, pd.NA, dropna, isnull, interpolate
name: API Design

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15300?src=pr&el=h1) Report
> Merging [#15300](https://codecov.io/gh/pandas-dev/pandas/pull/15300?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/9ddba8dc811184c49d9bc4df5dc97d505345ec23?src=pr&el=desc) will **increase** coverage by `<.01%`.


```diff
@@            Coverage Diff             @@
##           master   #15300      +/-   ##
==========================================
+ Coverage   86.33%   86.33%   +<.01%     
==========================================
  Files         139      139              
  Lines       51149    51157       +8     
==========================================
+ Hits        44157    44165       +8     
  Misses       6992     6992
```


| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/15300?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/tseries/base.py](https://codecov.io/gh/pandas-dev/pandas/compare/9ddba8dc811184c49d9bc4df5dc97d505345ec23...8c35656f7911e1aaa5d11a3902939f29d722c34a?src=pr&el=tree#diff-cGFuZGFzL3RzZXJpZXMvYmFzZS5weQ==) | `96.59% <100%> (ø)` | :white_check_mark: |
| [pandas/indexes/base.py](https://codecov.io/gh/pandas-dev/pandas/compare/9ddba8dc811184c49d9bc4df5dc97d505345ec23...8c35656f7911e1aaa5d11a3902939f29d722c34a?src=pr&el=tree#diff-cGFuZGFzL2luZGV4ZXMvYmFzZS5weQ==) | `96.17% <100%> (+0.01%)` | :white_check_mark: |
| [pandas/indexes/category.py](https://codecov.io/gh/pandas-dev/pandas/compare/9ddba8dc811184c49d9bc4df5dc97d505345ec23...8c35656f7911e1aaa5d11a3902939f29d722c34a?src=pr&el=tree#diff-cGFuZGFzL2luZGV4ZXMvY2F0ZWdvcnkucHk=) | `98.57% <100%> (ø)` | :white_check_mark: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15300?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15300?src=pr&el=footer). Last update [9ddba8d...8c35656](https://codecov.io/gh/pandas-dev/pandas/compare/9ddba8dc811184c49d9bc4df5dc97d505345ec23...8c35656f7911e1aaa5d11a3902939f29d722c34a?el=footer&src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
Added a tutorial for pandas dataframes
State: closed

 - [ ] closes #xxxx
 - [ ] tests added / passed
 - [ ] passes ``git diff upstream/master | flake8 --diff``
 - [ ] whatsnew entry


Labels:
name: Docs

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15295?src=pr&el=h1) Report
> Merging [#15295](https://codecov.io/gh/pandas-dev/pandas/pull/15295?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/df9fc4f17d342cc75b596918b1da1ecaaf0ae54f?src=pr&el=desc) will **increase** coverage by `<.01%`.


```diff
@@            Coverage Diff             @@
##           master   #15295      +/-   ##
==========================================
+ Coverage   86.32%   86.33%   +<.01%     
==========================================
  Files         139      139              
  Lines       51149    51149              
==========================================
+ Hits        44156    44157       +1     
+ Misses       6993     6992       -1
```


| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/15295?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/common.py](https://codecov.io/gh/pandas-dev/pandas/compare/df9fc4f17d342cc75b596918b1da1ecaaf0ae54f...8305bc4fd3f543d02784ad858ff6e3a70b4f764e?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvY29tbW9uLnB5) | `91.36% <ø> (+0.33%)` | :white_check_mark: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15295?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15295?src=pr&el=footer). Last update [df9fc4f...8305bc4](https://codecov.io/gh/pandas-dev/pandas/compare/df9fc4f17d342cc75b596918b1da1ecaaf0ae54f...8305bc4fd3f543d02784ad858ff6e3a70b4f764e?el=footer&src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
thanks!
BUG: Support empty dict-likes in replace()
State: closed

 - [x] closes #15289
 - [x] tests added / passed
 - [x] passes ``git diff upstream/master | flake8 --diff``
 - [x] whatsnew entry

Labels:
name: Bug
name: Reshaping
description: Concat, Merge/Join, Stack/Unstack, Explode

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15294?src=pr&el=h1) Report
> Merging [#15294](https://codecov.io/gh/pandas-dev/pandas/pull/15294?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/845208055845b0db58d2bfee7ba39f6862ce141c?src=pr&el=desc) will **not impact** coverage.


```diff
@@           Coverage Diff           @@
##           master   #15294   +/-   ##
=======================================
  Coverage   86.33%   86.33%           
=======================================
  Files         139      139           
  Lines       51149    51149           
=======================================
  Hits        44157    44157           
  Misses       6992     6992
```


| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/15294?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/generic.py](https://codecov.io/gh/pandas-dev/pandas/compare/845208055845b0db58d2bfee7ba39f6862ce141c...f349e0a58876157ffa2a6fff30d1cf5a4d8f0b04?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZ2VuZXJpYy5weQ==) | `96.33% <100%> (ø)` | :white_check_mark: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15294?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15294?src=pr&el=footer). Last update [8452080...f349e0a](https://codecov.io/gh/pandas-dev/pandas/compare/845208055845b0db58d2bfee7ba39f6862ce141c...f349e0a58876157ffa2a6fff30d1cf5a4d8f0b04?el=footer&src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
thanks @ExpHP nice PR!
COMPAT: xarray 0.8.2 test compat w.r.t. CategoricalIndex idempotency
State: closed

closes #15282


Labels:
name: Testing
description: pandas testing functions or related to the test suite
name: Compat
description: pandas objects compatability with Numpy or Python functions

Comments:
@shoyer 
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15285?src=pr&el=h1) Report
> Merging [#15285](https://codecov.io/gh/pandas-dev/pandas/pull/15285?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/c26e5bbed826aaf9a643c604f7f754f29af4bd64?src=pr&el=desc) will **increase** coverage by `-0.01%`.


```diff
@@            Coverage Diff             @@
##           master   #15285      +/-   ##
==========================================
- Coverage   86.33%   86.32%   -0.01%     
==========================================
  Files         139      139              
  Lines       51149    51149              
==========================================
- Hits        44157    44156       -1     
- Misses       6992     6993       +1
```


| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/15285?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/common.py](https://codecov.io/gh/pandas-dev/pandas/compare/c26e5bbed826aaf9a643c604f7f754f29af4bd64...0ad7b94e2159e5ad9083c69f3a36d078b56b4c2e?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvY29tbW9uLnB5) | `91.02% <ø> (-0.34%)` | :x: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15285?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15285?src=pr&el=footer). Last update [c26e5bb...0ad7b94](https://codecov.io/gh/pandas-dev/pandas/compare/c26e5bbed826aaf9a643c604f7f754f29af4bd64...0ad7b94e2159e5ad9083c69f3a36d078b56b4c2e?el=footer&src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
ENH: Set default dialect to None to enable SQL prefixes
State: closed

Alters the ```read_gbq``` function to leave ```dialect``` unset by default. This allows the user to specify the dialect using a [query prefix](https://cloud.google.com/bigquery/docs/reference/standard-sql/enabling-standard-sql#sql-prefix), while leaving the default behavior unchanged.

Labels:
name: Enhancement

Comments:
cc @parthea 
can you add a test for this? (not sure if you need to modify any existing tests).

cc @parthea 
I'm happy to add a test, but would appreciate some guidance into which cases it should cover. Here are the cases I'm thinking about:

- ```#standardsql``` hint works with no dialect passed
- ```#legacysql``` hint works with no dialect passed
- ```#standardsql``` works with ```standard``` passed as dialect
- ```#legacysql``` works with ```legacy``` passed as dialect 
@cgrin I think just a test to exercise it would be great, e.g.

```
read_gbq(....) # default
read_gbq(..., dialect=....) # legacy
read_gbq(..., dialect=....) # standard
```

then compare those
actually this should be migrated to https://github.com/pydata/pandas-gbq. pls open a PR there if desired.
Fix overflow error in cartesian_product
State: closed

When the numbers in `X` are large it can cause an overflow error on windows machine where the native `int` is 32 bit. Switching to np.intp alleviates this problem.

Other fixes would include switching to np.uint32 or np.uint64.

#15234 


Labels:
name: Windows
description: Windows OS
name: Compat
description: pandas objects compatability with Numpy or Python functions

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15265?src=pr&el=h1) Report
> Merging [#15265](https://codecov.io/gh/pandas-dev/pandas/pull/15265?src=pr&el=desc) into [0.19.x](https://codecov.io/gh/pandas-dev/pandas/commit/ead784f2b46a785c74a88722dea75d5aedcb0a77?src=pr&el=desc) will **not impact** coverage.


```diff
@@           Coverage Diff           @@
##           0.19.x   #15265   +/-   ##
=======================================
  Coverage   85.27%   85.27%           
=======================================
  Files         144      144           
  Lines       50946    50946           
=======================================
  Hits        43444    43444           
  Misses       7502     7502
```


| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/15265?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/tools/util.py](https://codecov.io/gh/pandas-dev/pandas/compare/ead784f2b46a785c74a88722dea75d5aedcb0a77...b196878940f6c56d07667b5e987f7e25ad390693?src=pr&el=tree#diff-cGFuZGFzL3Rvb2xzL3V0aWwucHk=) | `96.77% <100%> (ø)` | :white_check_mark: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15265?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15265?src=pr&el=footer). Last update [ead784f...c9c8d5e](https://codecov.io/gh/pandas-dev/pandas/compare/ead784f2b46a785c74a88722dea75d5aedcb0a77...c9c8d5e3f250299e9888da239ac9ea9246c047c1?el=footer&src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
need a test for this (IOW something *simple* that fails w/o the fix and passes with it). 

best way is to step thru your code until you hit this and see what the inputs are (to cartesian product) and can use that as a test.

need a whats new (bug fix) as well.
ping on green.
thanks @david-hoffman 

FYI, you were actually branched off of the 0.19.x branch, rather than master, but I picked the commit.
CLN: remove build some warnings
State: closed

CLN:  from algos_rank_helper.pxi.in
CLN: and algos_groupby_helper.pxi.in
CLN: hashtable warns
CLN: parser warnings

closes #15190


Labels:
name: Build
description: Library building on various platforms
name: Clean

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15259?src=pr&el=h1) Report
> Merging [#15259](https://codecov.io/gh/pandas-dev/pandas/pull/15259?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/7bb498083ce163f92822487dd4b15e9659dd45d7?src=pr&el=desc) will **increase** coverage by `-0.01%`.


```diff
@@            Coverage Diff             @@
##           master   #15259      +/-   ##
==========================================
- Coverage   86.33%   86.32%   -0.01%     
==========================================
  Files         139      139              
  Lines       51149    51149              
==========================================
- Hits        44157    44156       -1     
- Misses       6992     6993       +1
```


| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/15259?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/common.py](https://codecov.io/gh/pandas-dev/pandas/compare/7bb498083ce163f92822487dd4b15e9659dd45d7...12cc0613140895f48f7d4990c5576f983205bfc2?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvY29tbW9uLnB5) | `91.02% <ø> (-0.34%)` | :x: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15259?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/15259?src=pr&el=footer). Last update [7bb4980...12cc061](https://codecov.io/gh/pandas-dev/pandas/compare/7bb498083ce163f92822487dd4b15e9659dd45d7...12cc0613140895f48f7d4990c5576f983205bfc2?el=footer&src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
TST: MultiIndex Slicing maintains first level index (#12697)
State: closed

 - [x] closes #12697
 - [x] tests added / passed
 - [x] passes ``git diff upstream/master | flake8 --diff``

The original issue appears to work correctly on master and doesn't seem to have been fixed by a PR from 0.20.0

Labels:
name: Testing
description: pandas testing functions or related to the test suite
name: MultiIndex

Comments:
Thanks! 

Seems it was already fixed in 0.19.0 as well. 

Just wondering for the location of the test, we don't have a separate class/file for multi-index tests? Now it seems in one gigantic `TestIndexing` class (@jreback?)
## [Current coverage](https://codecov.io/gh/pandas-dev/pandas/pull/15255?src=pr) is 86.32% (diff: 100%)
> Merging [#15255](https://codecov.io/gh/pandas-dev/pandas/pull/15255?src=pr) into [master](https://codecov.io/gh/pandas-dev/pandas/branch/master?src=pr) will not change coverage

```diff
@@             master     #15255   diff @@
==========================================
  Files           139        139          
  Lines         51149      51149          
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
  Hits          44156      44156          
  Misses         6993       6993          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [66d8c41...6477929](https://codecov.io/gh/pandas-dev/pandas/compare/66d8c41db4e1cb39e06c9e1f712f7d1f105c4478...64779299ac98b4cd5b595abb0b47660ece69eb8b?src=pr)
some tests in test_multilevel some in test_indexing

prob should make a new combined one
@mroeschke Thanks! 
Let's keep potential reordering of tests for another PR
BUG GH15240 Timestamp.replace raised ValueError instead of TypeError.
State: closed

 - [ ] closes #15240
 - [1] tests added / passed
 - [ ] passes ``git diff upstream/master | flake8 --diff``
 - [ ] whatsnew entry 514


Labels:

Comments:
this is already covered by #15248

thanks
lots of other issues!

love to have contributions!
Timestamp replace compatibility
State: closed

 - [x ] closes #15240 
 - [] tests added / passed
 - [x] passes ``git diff upstream/master | flake8 --diff``
 - [x] whatsnew entry


Labels:
name: Datetime
description: Datetime data dtype
name: Error Reporting
description: Incorrect or improved errors from pandas

Comments:
lgtm. ping on green.
@jreback I am bit puzzled by the errors in the tests. I see issues but I think they are unrelated to my changes. Essentially, I have a) change a signature of function, b) renamed an internal variable (tzinfo) and c) adapted some internal code) but I get error about infinite recursion in some totally unrelated tests (but I may be wrong in my interpretation)
@sdementen I pushed a fix to your branch. This is actually a tricky thing, ``.replace`` accepts ``None`` as an actual value for ``tzinfo``. So you need to distinguish between not passing it and passing it with a value of ``None``. The trick is to default it like ``tzinfo=object``, then check if ``tzinfo is object``, means it was not passed.

This shows up in the way it did because ``.replace`` is used a lot, for example, to reset the time zone on objects, e.g. ``Timestamp.replace(tzinfo=None)`` is common in ``dateutil``
thanks @sdementen !
Thanks to you for your support in this PR !
BTW, the replace function when used to change the time  (not the tzinfo  part), leads sometimes to inconsistent times when dst is involved in the case the replaced date cross the dst  (and so should have his offset changed). 
Is this a bug ? Or a difficult to solve limit ? Is the introduction of the fold argument a part of a future solution ?
If it is a bug not yet identified, i can add an issue

@sdementen you would have to show an example. ``.replace`` replaces current times; however it is possible to then generate an invalid time. ``datetime.datetime`` doesn't handle this at all. ``Timestamp`` *does* to some extant. Look thru open issues and you will see a couple that are out there.
PERF: correctly report memory used by Index's
State: closed


Labels:
name: Indexing
description: Related to indexing on series/frames, not to indexes themselves
name: Performance
description: Memory or execution speed performance

Comments:
## [Current coverage](https://codecov.io/gh/pandas-dev/pandas/pull/15237?src=pr) is 86.31% (diff: 100%)
> Merging [#15237](https://codecov.io/gh/pandas-dev/pandas/pull/15237?src=pr) into [master](https://codecov.io/gh/pandas-dev/pandas/branch/master?src=pr) will increase coverage by **<.01%**

```diff
@@             master     #15237   diff @@
==========================================
  Files           139        139          
  Lines         51096      51103     +7   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
+ Hits          44103      44110     +7   
  Misses         6993       6993          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [be32852...d77c002](https://codecov.io/gh/pandas-dev/pandas/compare/be328521b3a5525175b08cb740bb970ccf75727e...d77c002fa597c554a4dda848aff0258d5d458844?src=pr)
What do you think about using `__sizeof__` so it works with python?
@MaximilianR I added ``__sizeof__``, though you would have to do something like

``sys.getsizeof(index._engine)``, which is simply captured by ``index.memory_usage()`` anyhow
Make Series.map() documentation a bit more verbose
State: closed


Labels:
name: Docs

Comments:
Thanks for the quick response. I have added some text and added more code to be able to reproduce 'at home'.
## [Current coverage](https://codecov.io/gh/pandas-dev/pandas/pull/15235?src=pr) is 86.31% (diff: 100%)
> Merging [#15235](https://codecov.io/gh/pandas-dev/pandas/pull/15235?src=pr) into [master](https://codecov.io/gh/pandas-dev/pandas/branch/master?src=pr) will not change coverage

```diff
@@             master     #15235   diff @@
==========================================
  Files           139        139          
  Lines         51091      51091          
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
  Hits          44099      44099          
  Misses         6992       6992          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [0c8442c...c5113f2](https://codecov.io/gh/pandas-dev/pandas/compare/0c8442c3f5c76c8e5b36ca313d3c38527e9f4b0c...c5113f2a15220c1935cbdf293eb89819a151e739?src=pr)
thanks!
BUG/API: Return a Series from DataFrame.asof with no match
State: closed

 - [x] closes #15118
 - [x] tests added / passed
 - [x] passes ``git diff upstream/master | flake8 --diff``
 - [x] whatsnew entry

Technically this is an API change, but more of a bug so didn't think there was a need to warn / deprecate?

Also there seems to be room to clean up the whole `asof` implementation, xref #10343, but wanted to keep that separate

Labels:
name: Bug
name: Datetime
description: Datetime data dtype

Comments:
minor comments, lgtm.

ok on the API change (usually these are more 'visible' even if its a 'bug fix')
merge on green.
## [Current coverage](https://codecov.io/gh/pandas-dev/pandas/pull/15232?src=pr) is 86.31% (diff: 100%)
> Merging [#15232](https://codecov.io/gh/pandas-dev/pandas/pull/15232?src=pr) into [master](https://codecov.io/gh/pandas-dev/pandas/branch/master?src=pr) will increase coverage by **<.01%**

```diff
@@             master     #15232   diff @@
==========================================
  Files           139        139          
  Lines         51091      51094     +3   
  Methods           0          0          
  Messages          0          0          
  Branches          0          0          
==========================================
+ Hits          44099      44102     +3   
  Misses         6992       6992          
  Partials          0          0          
```

> Powered by [Codecov](https://codecov.io?src=pr). Last update [2619ee3...5c1befe](https://codecov.io/gh/pandas-dev/pandas/compare/2619ee3cbf88b274d475b9a73d2d1e6e72c0a9ab...5c1befe93ca6d49ef5fb97c199f57a4cc4d791ee?src=pr)
Steal the algorithm used to combine hashes from tupleobject.c
State: closed

closes #15224


Labels:
name: Algos
description: Non-arithmetic algos: value_counts, factorize, sorting, isin, clip, shift, diff

Comments:
Here's an initial pass at stealing https://github.com/python-git/python/blob/master/Objects/tupleobject.c#L290 for the combining. I am not 100% that the problem is my (rather crude) combiner, but possibly the exact way we're using the bitmixer in hash_array. I'm trying to think about it........I think we might be maintaining undesirable linearity.

May I ask, how did you encounter these collisions?
If the basic approach looks sound I can add some comments around some of the lazy iterator wackiness.
@mikegraham the collisions I found by hashing 

```
In [3]: i = pd.MultiIndex.from_product([np.arange(1000),np.arange(1000)],names=['one','two'])

In [4]: i.to_dataframe(index=False) 
```

which is basically a cartesian product of 1000 x 1000. nothing special really, just a test case I am using.
closing in favor of in #15224 

thanks @mikegraham