0.20.2 backports 1
First round of backports. Covers everything up to and including https://github.com/pandas-dev/pandas/pull/16526

@jorisvandenbossche I can't remember, did you make PRs for batches of backports or commit directly to the maintenance branch? I think I prefer PRs, if only for another historical record.

And I think we want to rebase and merge onto 0.20.x, not squash.
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=h1) Report
> Merging [#16535](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=desc) into [0.20.x](https://codecov.io/gh/pandas-dev/pandas/commit/e346c663cf76186c22f4d3b703461b1b60db280f?src=pr&el=desc) will **increase** coverage by `0.05%`.
> The diff coverage is `97.68%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/16535/graphs/tree.svg?height=150&width=650&token=eZ4WkYLtcO&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           0.20.x   #16535      +/-   ##
==========================================
+ Coverage   90.31%   90.37%   +0.05%     
==========================================
  Files         167      161       -6     
  Lines       50907    50980      +73     
==========================================
+ Hits        45977    46071      +94     
+ Misses       4930     4909      -21
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `88.14% <97.1%> (+0.06%)` | :arrow_up: |
| #single | `40.15% <30.63%> (-0.24%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/indexes/base.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW5kZXhlcy9iYXNlLnB5) | `95.74% <ø> (-0.01%)` | :arrow_down: |
| [pandas/io/clipboards.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2lvL2NsaXBib2FyZHMucHk=) | `100% <ø> (ø)` | |
| [pandas/util/testing.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL3V0aWwvdGVzdGluZy5weQ==) | `79.25% <100%> (+0.37%)` | :arrow_up: |
| [pandas/core/indexes/multi.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvaW5kZXhlcy9tdWx0aS5weQ==) | `96.56% <100%> (-0.17%)` | :arrow_down: |
| [pandas/core/missing.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvbWlzc2luZy5weQ==) | `84.27% <100%> (ø)` | :arrow_up: |
| [pandas/io/formats/style.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2lvL2Zvcm1hdHMvc3R5bGUucHk=) | `95.92% <100%> (+0.03%)` | :arrow_up: |
| [pandas/io/formats/format.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2lvL2Zvcm1hdHMvZm9ybWF0LnB5) | `96.02% <100%> (+0.36%)` | :arrow_up: |
| [pandas/core/algorithms.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYWxnb3JpdGhtcy5weQ==) | `94.41% <100%> (ø)` | :arrow_up: |
| [pandas/core/window.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvd2luZG93LnB5) | `96.48% <100%> (+0.23%)` | :arrow_up: |
| [pandas/core/sparse/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvc3BhcnNlL2ZyYW1lLnB5) | `94.26% <100%> (ø)` | :arrow_up: |
| ... and [50 more](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=tree-more) | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/16535?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/16535?src=pr&el=footer). Last update [e346c66...9c4a033](https://codecov.io/gh/pandas-dev/pandas/pull/16535?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 lgtm. this covers to current master? maybe create a new label for backporting? Yes, it's through current master.

I've made a new label, "Needs Backport". Let's try labeling new PRs for 0.20.x with that, then I'll remove it when I've backported (cc. @jorisvandenbossche) > @jorisvandenbossche I can't remember, did you make PRs for batches of backports or commit directly to the maintenance branch? I think I prefer PRs, if only for another historical record.

I cherry picked directly to the 0.19.x branch, but making a PR like this seems also a nice way to keep track of things. So seems good!

> And I think we want to rebase and merge onto 0.20.x, not squash.

Yeah, certainly, like you did in the meantime