BUG: errors and segfaults in groupby cython transforms (#16771)
State: closed

- [x] closes #16771 
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry


Labels:
name: Groupby
name: Missing-data
description: np.nan, pd.NaT, pd.NA, dropna, isnull, interpolate
name: Categorical
description: Categorical Data Type

Comments:
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/26134?src=pr&el=h1) Report
> Merging [#26134](https://codecov.io/gh/pandas-dev/pandas/pull/26134?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/872a23bca9f74816aaf525d1b00d790c3407cc08?src=pr&el=desc) will **decrease** coverage by `<.01%`.
> The diff coverage is `100%`.

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

```diff
@@            Coverage Diff             @@
##           master   #26134      +/-   ##
==========================================
- Coverage   91.99%   91.98%   -0.01%     
==========================================
  Files         175      175              
  Lines       52387    52387              
==========================================
- Hits        48191    48187       -4     
- Misses       4196     4200       +4
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.53% <100%> (ø)` | :arrow_up: |
| #single | `40.74% <0%> (-0.14%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/26134?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/groupby/ops.py](https://codecov.io/gh/pandas-dev/pandas/pull/26134/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZ3JvdXBieS9vcHMucHk=) | `94.23% <100%> (ø)` | :arrow_up: |
| [pandas/io/gbq.py](https://codecov.io/gh/pandas-dev/pandas/pull/26134/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL2dicS5weQ==) | `75% <0%> (-12.5%)` | :arrow_down: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/26134/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `96.9% <0%> (-0.12%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/26134?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/26134?src=pr&el=footer). Last update [872a23b...914172c](https://codecov.io/gh/pandas-dev/pandas/pull/26134?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/26134?src=pr&el=h1) Report
> Merging [#26134](https://codecov.io/gh/pandas-dev/pandas/pull/26134?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/c79b7bb91236a2e4cde3782d23109ac1f5e76dce?src=pr&el=desc) will **decrease** coverage by `0.02%`.
> The diff coverage is `100%`.

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

```diff
@@            Coverage Diff             @@
##           master   #26134      +/-   ##
==========================================
- Coverage      92%   91.98%   -0.03%     
==========================================
  Files         175      175              
  Lines       52371    52383      +12     
==========================================
  Hits        48184    48184              
- Misses       4187     4199      +12
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `90.54% <100%> (-0.02%)` | :arrow_down: |
| #single | `40.74% <0%> (-0.15%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/26134?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/groupby/ops.py](https://codecov.io/gh/pandas-dev/pandas/pull/26134/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZ3JvdXBieS9vcHMucHk=) | `94.23% <100%> (-1.74%)` | :arrow_down: |
| [pandas/io/gbq.py](https://codecov.io/gh/pandas-dev/pandas/pull/26134/diff?src=pr&el=tree#diff-cGFuZGFzL2lvL2dicS5weQ==) | `75% <0%> (-12.5%)` | :arrow_down: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/26134/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `96.9% <0%> (-0.12%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/26134?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/26134?src=pr&el=footer). Last update [c79b7bb...41befd1](https://codecov.io/gh/pandas-dev/pandas/pull/26134?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

Hmm so I don't think the behavior here is correct as it kind of defeats the purpose of the `observed` keyword to groupby. Citing your original example:

```python
In [15]: import pandas as pd
    ...:
    ...: x_vals = [1]
    ...: x_cats = range(2)
    ...: y = [1]
    ...: df = pd.DataFrame(dict(x=pd.Categorical(x_vals, x_cats), y=y))
```

Using `observed=True` yields the correct answer:

```python
In [15]: df.groupby('x', observed=True).y.cumsum()
Out[15]:
0    1
Name: y, dtype: int64
```

Definitely the current random number that gets yielded with that being False is incorrect:

```python
In [16]: df.groupby('x', observed=False).y.cumsum()
Out[16]:
0    4825136601
Name: y, dtype: int64
```

But at the same time what you have here in this PR I think is forcing `observed=True` behavior regardless of what the user specifies. 

For consistency the expectation should be a DataFrame with all of the categories in the index and probably np.nan where the value is not actually observed. Kind of wonky given this is a transform but I think that's the best approach

Alternately it may make more sense to just raise when a user tries to run a transform with a categorical in the grouper with unobserved categories and `observed=False`. 

I can't imagine a scenario where running a transform and getting back a differently indexed result would be useful in the scope of pandas usage and this would certainly be simpler to integrate into the code base
@jreback @TomAugspurger if you have thoughts on comment above
The above comments seem a little confused? As these are transforms, there's no such thing as observed=True or observed=False behaviour; either way, the output index will be the same as the input index.

As observed=False is the default, I think we should continue to support transforms with it set; otherwise you'd have to pass observed=True every time you wanted to call a transform.
@jreback Requested changes made.

@WillAyd ASV shows no significant difference.
<details>

```
$ asv continuous -f 1.1 upstream/master HEAD -b ^groupby
· Creating environments
· Discovering benchmarks
·· Uninstalling from conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt.
·· Building dae86455 <master> for conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt.......................................................
·· Installing dae86455 <master> into conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt...
· Running 102 total benchmarks (2 commits * 1 environments * 51 benchmarks)
[  0.00%] · For pandas commit 872a23bc <upstream/master> (round 1/2):
[  0.00%] ·· Building for conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt........................................................
[  0.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[  0.49%] ··· Setting up groupby.py:215                                                                                                                                                        ok
[  0.49%] ··· Running (groupby.AggFunctions.time_different_numpy_functions--)....
[  2.45%] ··· Setting up groupby.py:36                                                                                                                                                         ok
[  2.45%] ··· Running (groupby.Apply.time_copy_function_multi_col--).............
[  8.82%] ··· Running (groupby.Float32.time_sum--)..
[  9.80%] ··· Running (groupby.GroupByMethods.time_dtype_as_group--).
[ 10.29%] ··· Running (groupby.GroupManyLabels.time_sum--).....
[ 12.75%] ··· Running (groupby.Nth.time_groupby_nth_all--).....
[ 15.20%] ··· Running (groupby.Size.time_category_size--)............
[ 21.08%] ··· Running (groupby.TransformNaN.time_first--).
[ 21.57%] ··· Setting up groupby.py:172                                                                                                                                                        ok
[ 21.57%] ··· Running (groupby.CountMultiDtype.time_multi_count--).
[ 22.06%] ··· Setting up groupby.py:198                                                                                                                                                        ok
[ 22.06%] ··· Running (groupby.CountMultiInt.time_multi_int_count--)..
[ 23.04%] ··· Setting up groupby.py:71                                                                                                                                                         ok
[ 23.04%] ··· Running (groupby.Groups.time_series_groups--).
[ 23.53%] ··· Setting up groupby.py:260                                                                                                                                                        ok
[ 23.53%] ··· Running (groupby.MultiColumn.time_col_select_lambda_sum--)....
[ 25.00%] · For pandas commit dae86455 <master> (round 1/2):
[ 25.00%] ·· Building for conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt....
[ 25.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[ 25.49%] ··· Setting up groupby.py:215                                                                                                                                                        ok
[ 25.49%] ··· Running (groupby.AggFunctions.time_different_numpy_functions--)....
[ 27.45%] ··· Setting up groupby.py:36                                                                                                                                                         ok
[ 27.45%] ··· Running (groupby.Apply.time_copy_function_multi_col--).............
[ 33.82%] ··· Running (groupby.Float32.time_sum--)..
[ 34.80%] ··· Running (groupby.GroupByMethods.time_dtype_as_group--).
[ 35.29%] ··· Running (groupby.GroupManyLabels.time_sum--)....
[ 37.25%] ··· Running (groupby.Nth.time_frame_nth_any--)......
[ 40.20%] ··· Running (groupby.Size.time_category_size--).............
[ 46.57%] ··· Setting up groupby.py:172                                                                                                                                                        ok
[ 46.57%] ··· Running (groupby.CountMultiDtype.time_multi_count--).
[ 47.06%] ··· Setting up groupby.py:198                                                                                                                                                        ok
[ 47.06%] ··· Running (groupby.CountMultiInt.time_multi_int_count--)..
[ 48.04%] ··· Setting up groupby.py:71                                                                                                                                                         ok
[ 48.04%] ··· Running (groupby.Groups.time_series_groups--).
[ 48.53%] ··· Setting up groupby.py:260                                                                                                                                                        ok
[ 48.53%] ··· Running (groupby.MultiColumn.time_col_select_lambda_sum--)....
[ 50.00%] · For pandas commit dae86455 <master> (round 2/2):
[ 50.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[ 50.49%] ··· Setting up groupby.py:215                                                                                                                                                        ok
[ 50.49%] ··· groupby.AggFunctions.time_different_numpy_functions                                                                                                                        17.0±1ms
[ 50.98%] ··· groupby.AggFunctions.time_different_python_functions_multicol                                                                                                              28.8±3ms
[ 51.47%] ··· groupby.AggFunctions.time_different_python_functions_singlecol                                                                                                              381±5ms
[ 51.96%] ··· groupby.AggFunctions.time_different_str_functions                                                                                                                        16.7±0.3ms
[ 52.45%] ··· Setting up groupby.py:36                                                                                                                                                         ok
[ 52.45%] ··· groupby.Apply.time_copy_function_multi_col                                                                                                                               1.67±0.06s
[ 52.94%] ··· groupby.Apply.time_copy_overhead_single_col                                                                                                                                617±20ms
[ 53.43%] ··· groupby.Apply.time_scalar_function_multi_col                                                                                                                               31.2±1ms
[ 53.92%] ··· groupby.Apply.time_scalar_function_single_col                                                                                                                            8.82±0.1ms
[ 54.41%] ··· groupby.ApplyDictReturn.time_groupby_apply_dict_return                                                                                                                      123±5ms
[ 54.90%] ··· groupby.Categories.time_groupby_extra_cat_nosort                                                                                                                         13.0±0.4ms
[ 55.39%] ··· groupby.Categories.time_groupby_extra_cat_sort                                                                                                                           2.55±0.1ms
[ 55.88%] ··· groupby.Categories.time_groupby_nosort                                                                                                                                   16.7±0.4ms
[ 56.37%] ··· groupby.Categories.time_groupby_ordered_nosort                                                                                                                           15.7±0.2ms
[ 56.86%] ··· groupby.Categories.time_groupby_ordered_sort                                                                                                                            2.67±0.09ms
[ 57.35%] ··· groupby.Categories.time_groupby_sort                                                                                                                                     2.68±0.2ms
[ 57.84%] ··· groupby.DateAttributes.time_len_groupby_object                                                                                                                              388±9ms
[ 58.33%] ··· groupby.Datelike.time_sum                                                                                                                                                        ok
[ 58.33%] ··· =============== =============
                  grouper
              --------------- -------------
                period_range   3.13±0.07ms
                 date_range     3.94±0.2ms
               date_range_tz    4.45±0.2ms
              =============== =============

[ 58.82%] ··· groupby.Float32.time_sum                                                                                                                                                 11.8±0.3ms
[ 59.31%] ··· groupby.GroupByMethods.time_dtype_as_field                                                                                                                                       ok
[ 59.31%] ··· ========== ============== ============= ================
              --                                 application
              ------------------------- ------------------------------
                dtype        method         direct     transformation
              ========== ============== ============= ================
                 int          all          158±3μs        161±8μs
                 int          any          160±2μs        160±6μs
                 int         bfill         452±10μs       449±9μs
                 int         count         239±4μs        240±8μs
                 int        cumcount       391±4μs        392±2μs
                 int         cummax      1.05±0.03ms    1.06±0.02ms
                 int         cummin      1.06±0.03ms    1.08±0.02ms
                 int        cumprod      1.29±0.07ms    1.31±0.04ms
                 int         cumsum      1.02±0.02ms    1.06±0.02ms
                 int        describe      2.13±0.09s      2.12±0s
                 int         ffill         450±2μs        456±5μs
                 int         first         344±6μs        348±2μs
                 int          head         636±3μs        657±8μs
                 int          last         327±7μs        331±3μs
                 int          mad          850±6ms        852±8ms
                 int          max          362±2μs        363±3μs
                 int          min          356±10μs       357±4μs
                 int         median        619±8μs        625±30μs
                 int          mean         578±3μs        582±4μs
                 int        nunique        573±4μs        572±3μs
                 int       pct_change    2.03±0.03ms    2.07±0.02ms
                 int          prod         576±6μs        588±10μs
                 int        quantile       514±2μs        520±30μs
                 int          rank       1.35±0.02ms     1.40±0.1ms
                 int          sem        1.19±0.01ms    1.19±0.02ms
                 int         shift         260±20μs       244±2μs
                 int          size         186±5μs        184±2μs
                 int          skew         246±2ms        248±1ms
                 int          std          568±4μs        564±5μs
                 int          sum          615±8μs        610±4μs
                 int          tail         658±8μs        661±5μs
                 int         unique        239±3ms        238±2ms
                 int      value_counts   1.47±0.02ms    1.46±0.02ms
                 int          var          384±10μs       389±3μs
                float         all          154±4μs        159±2μs
                float         any          157±3μs        159±2μs
                float        bfill         389±5μs        383±2μs
                float        count         235±6μs        232±4μs
                float       cumcount       391±5μs        402±6μs
                float        cummax        985±9μs        971±6μs
                float        cummin        973±20μs       997±40μs
                float       cumprod        966±20μs       977±9μs
                float        cumsum        977±10μs       978±20μs
                float       describe       2.12±0s       2.12±0.03s
                float        ffill         391±10μs       384±3μs
                float        first         284±2μs        274±5μs
                float         head         645±5μs        642±10μs
                float         last         264±2μs        260±20μs
                float         mad          838±2ms        837±2ms
                float         max          280±2μs        290±8μs
                float         min          286±3μs        286±2μs
                float        median        315±5μs        308±1μs
                float         mean         270±2μs        275±4μs
                float       nunique        579±5μs        573±4μs
                float      pct_change    1.93±0.03ms    1.93±0.03ms
                float         prod        269±0.9μs       271±1μs
                float       quantile       520±5μs        509±8μs
                float         rank       1.33±0.01ms    1.33±0.04ms
                float         sem        1.11±0.02ms    1.10±0.01ms
                float        shift         221±3μs        220±3μs
                float         size         183±4μs        186±3μs
                float         skew         242±1ms        240±4ms
                float         std          446±5μs        459±6μs
                float         sum          269±2μs        273±4μs
                float         tail         658±10μs       654±6μs
                float        unique        244±2ms        244±2ms
                float     value_counts   1.69±0.04ms    1.64±0.03ms
                float         var          286±4μs        290±20μs
                object        all          711±3μs        718±20μs
                object        any          714±7μs        712±2μs
                object       bfill         579±2μs        583±30μs
                object       count         329±3μs        329±3μs
                object      cumcount       395±5μs        395±7μs
                object       cummax          n/a            n/a
                object       cummin          n/a            n/a
                object      cumprod          n/a            n/a
                object       cumsum          n/a            n/a
                object      describe         n/a            n/a
                object       ffill         589±20μs       580±4μs
                object       first         520±3μs        521±2μs
                object        head         688±10μs       697±7μs
                object        last         519±8μs        522±6μs
                object        mad            n/a            n/a
                object        max            n/a            n/a
                object        min            n/a            n/a
                object       median          n/a            n/a
                object        mean           n/a            n/a
                object      nunique        903±9μs        906±8μs
                object     pct_change        n/a            n/a
                object        prod           n/a            n/a
                object      quantile         n/a            n/a
                object        rank           n/a            n/a
                object        sem            n/a            n/a
                object       shift         346±4μs        342±3μs
                object        size         182±3μs        185±2μs
                object        skew           n/a            n/a
                object        std            n/a            n/a
                object        sum            n/a            n/a
                object        tail         716±10μs       708±5μs
                object       unique        277±1ms        280±2ms
                object    value_counts   1.37±0.03ms    1.37±0.01ms
                object        var            n/a            n/a
               datetime       all          161±2μs        159±2μs
               datetime       any          163±2μs        163±1μs
               datetime      bfill         390±3μs        391±5μs
               datetime      count         228±2μs        221±3μs
               datetime     cumcount       392±4μs        393±2μs
               datetime      cummax          n/a            n/a
               datetime      cummin        938±3μs        941±10μs
               datetime     cumprod          n/a            n/a
               datetime      cumsum          n/a            n/a
               datetime     describe         n/a            n/a
               datetime      ffill         391±2μs        390±2μs
               datetime      first         228±2μs        228±3μs
               datetime       head         627±7μs        639±6μs
               datetime       last         206±5μs        209±1μs
               datetime       mad            n/a            n/a
               datetime       max          228±4μs        224±3μs
               datetime       min          241±4μs        243±5μs
               datetime      median          n/a            n/a
               datetime       mean           n/a            n/a
               datetime     nunique        454±4μs        458±5μs
               datetime    pct_change        n/a            n/a
               datetime       prod           n/a            n/a
               datetime     quantile       447±4μs        441±7μs
               datetime       rank         1.20±0ms     1.19±0.01ms
               datetime       sem            n/a            n/a
               datetime      shift         228±4μs        226±2μs
               datetime       size         184±3μs        183±1μs
               datetime       skew           n/a            n/a
               datetime       std            n/a            n/a
               datetime       sum            n/a            n/a
               datetime       tail         654±6μs        649±3μs
               datetime      unique        264±2ms        261±1ms
               datetime   value_counts   1.39±0.02ms    1.40±0.02ms
               datetime       var            n/a            n/a
              ========== ============== ============= ================

[ 59.80%] ··· groupby.GroupByMethods.time_dtype_as_group                                                                                                                                       ok
[ 59.80%] ··· ========== ============== ============= ================
              --                                 application
              ------------------------- ------------------------------
                dtype        method         direct     transformation
              ========== ============== ============= ================
                 int          all          158±2μs        161±4μs
                 int          any          162±3μs        163±5μs
                 int         bfill         452±2μs        454±5μs
                 int         count         236±5μs        236±4μs
                 int        cumcount       396±2μs        404±4μs
                 int         cummax      1.05±0.01ms    1.06±0.01ms
                 int         cummin      1.05±0.01ms    1.07±0.01ms
                 int        cumprod      1.33±0.02ms    1.31±0.01ms
                 int         cumsum      1.08±0.03ms    1.07±0.02ms
                 int        describe      3.11±0.01s     3.17±0.02s
                 int         ffill         458±4μs        448±2μs
                 int         first         352±3μs        355±4μs
                 int          head         651±7μs        644±9μs
                 int          last         338±4μs        344±6μs
                 int          mad         1.25±0.01s     1.25±0.01s
                 int          max          360±4μs        360±3μs
                 int          min          361±6μs        359±1μs
                 int         median        630±6μs        616±7μs
                 int          mean         589±9μs        583±7μs
                 int        nunique        584±7μs        581±4μs
                 int       pct_change    2.10±0.02ms    2.08±0.02ms
                 int          prod         634±10μs       620±8μs
                 int        quantile       523±8μs        527±10μs
                 int          rank       1.37±0.01ms      1.35±0ms
                 int          sem        1.33±0.02ms    1.35±0.03ms
                 int         shift         249±3μs        249±2μs
                 int          size         182±2μs        191±3μs
                 int          skew         365±4ms        368±2ms
                 int          std          703±6μs        700±7μs
                 int          sum          623±3μs        630±7μs
                 int          tail         676±10μs       676±7μs
                 int         unique        353±2ms        354±3ms
                 int      value_counts   1.44±0.02ms    1.44±0.01ms
                 int          var          523±6μs        528±3μs
                float         all          164±3μs        161±3μs
                float         any          165±7μs        163±1μs
                float        bfill         458±20μs       440±3μs
                float        count         241±4μs        246±2μs
                float       cumcount       373±7μs        372±10μs
                float        cummax      1.08±0.02ms    1.08±0.01ms
                float        cummin      1.09±0.01ms    1.07±0.01ms
                float       cumprod      1.34±0.02ms      1.34±0ms
                float        cumsum      1.08±0.01ms    1.08±0.01ms
                float       describe      4.86±0.01s     4.87±0.08s
                float        ffill        472±100μs       455±20μs
                float        first         354±5μs        350±3μs
                float         head         631±7μs        697±40μs
                float         last         349±6μs        345±6μs
                float         mad         1.92±0.09s     1.94±0.1s
                float         max          379±20μs       369±20μs
                float         min          408±60μs       367±7μs
                float        median       793±100μs       670±30μs
                float         mean         654±4μs       729±100μs
                float       nunique       700±100μs      708±100μs
                float      pct_change     2.23±0.2ms     2.29±0.3ms
                float         prod         657±30μs       656±3μs
                float       quantile       540±10μs       547±8μs
                float         rank       1.38±0.01ms    1.38±0.01ms
                float         sem        1.26±0.04ms    1.22±0.02ms
                float        shift         239±4μs        235±3μs
                float         size         197±8μs        189±3μs
                float         skew         605±60ms       621±70ms
                float         std          579±20μs       589±8μs
                float         sum          641±4μs        647±8μs
                float         tail         636±5μs        655±20μs
                float        unique        556±6ms        552±5ms
                float     value_counts   1.46±0.04ms    1.46±0.02ms
                float         var          407±4μs        401±5μs
                object        all          155±3μs        156±2μs
                object        any          158±5μs        160±3μs
                object       bfill         315±4μs        312±4μs
                object       count         235±7μs        241±10μs
                object      cumcount       345±4μs        346±8μs
                object       cummax          n/a            n/a
                object       cummin          n/a            n/a
                object      cumprod          n/a            n/a
                object       cumsum          n/a            n/a
                object      describe         n/a            n/a
                object       ffill         312±5μs        309±6μs
                object       first         330±4μs        339±10μs
                object        head         573±4μs        581±6μs
                object        last         323±6μs        324±6μs
                object        mad            n/a            n/a
                object        max            n/a            n/a
                object        min            n/a            n/a
                object       median          n/a            n/a
                object        mean           n/a            n/a
                object      nunique        417±2μs        424±6μs
                object     pct_change        n/a            n/a
                object        prod           n/a            n/a
                object      quantile         n/a            n/a
                object        rank           n/a            n/a
                object        sem            n/a            n/a
                object       shift         236±2μs        230±5μs
                object        size         183±5μs       183±0.6μs
                object        skew           n/a            n/a
                object        std            n/a            n/a
                object        sum            n/a            n/a
                object        tail         598±4μs        613±7μs
                object       unique      2.19±0.03ms    2.18±0.02ms
                object    value_counts   1.24±0.02ms    1.22±0.01ms
                object        var            n/a            n/a
               datetime       all          165±3μs        165±2μs
               datetime       any          162±7μs        166±2μs
               datetime      bfill         315±3μs        314±3μs
               datetime      count         247±6μs        244±3μs
               datetime     cumcount       373±7μs        364±4μs
               datetime      cummax          n/a            n/a
               datetime      cummin      1.08±0.01ms    1.08±0.02ms
               datetime     cumprod          n/a            n/a
               datetime      cumsum          n/a            n/a
               datetime     describe         n/a            n/a
               datetime      ffill         317±9μs        322±6μs
               datetime      first         352±5μs        354±3μs
               datetime       head         620±3μs        629±9μs
               datetime       last         345±3μs        349±3μs
               datetime       mad            n/a            n/a
               datetime       max          357±4μs        376±7μs
               datetime       min          366±10μs       367±4μs
               datetime      median          n/a            n/a
               datetime       mean           n/a            n/a
               datetime     nunique        580±2μs        579±2μs
               datetime    pct_change        n/a            n/a
               datetime       prod           n/a            n/a
               datetime     quantile       533±10μs       529±5μs
               datetime       rank       1.38±0.02ms    1.37±0.02ms
               datetime       sem            n/a            n/a
               datetime      shift         236±3μs        234±4μs
               datetime       size         190±1μs        193±4μs
               datetime       skew           n/a            n/a
               datetime       std            n/a            n/a
               datetime       sum            n/a            n/a
               datetime       tail         649±10μs       639±6μs
               datetime      unique        595±7ms        594±20ms
               datetime   value_counts   1.45±0.02ms      1.45±0ms
               datetime       var            n/a            n/a
              ========== ============== ============= ================

[ 60.29%] ··· groupby.GroupManyLabels.time_sum                                                                                                                                                 ok
[ 60.29%] ··· ======= =============
               ncols
              ------- -------------
                 1     3.18±0.03ms
                1000    6.35±0.2ms
              ======= =============

[ 60.78%] ··· groupby.GroupStrings.time_multi_columns                                                                                                                                     610±5ms
[ 61.27%] ··· groupby.Int64.time_overflow                                                                                                                                                 783±9ms
[ 61.76%] ··· groupby.Nth.time_frame_nth                                                                                                                                                       ok
[ 61.76%] ··· ========== ============
                dtype
              ---------- ------------
               float32    26.1±0.9ms
               float64    26.2±0.9ms
               datetime   25.7±0.2ms
                object    28.9±0.2ms
              ========== ============

[ 62.25%] ··· groupby.Nth.time_frame_nth_any                                                                                                                                                   ok
[ 62.25%] ··· ========== ============
                dtype
              ---------- ------------
               float32    58.4±0.6ms
               float64     55.0±1ms
               datetime   61.8±0.5ms
                object    64.1±0.9ms
              ========== ============

[ 62.75%] ··· groupby.Nth.time_groupby_nth_all                                                                                                                                                 ok
[ 62.75%] ··· ========== ============
                dtype
              ---------- ------------
               float32     50.2±1ms
               float64    49.3±0.9ms
               datetime   53.8±0.8ms
                object     56.9±1ms
              ========== ============

[ 63.24%] ··· groupby.Nth.time_series_nth                                                                                                                                                      ok
[ 63.24%] ··· ========== ============
                dtype
              ---------- ------------
               float32    28.6±0.8ms
               float64    27.8±0.5ms
               datetime   31.8±0.3ms
                object    31.9±0.7ms
              ========== ============

[ 63.73%] ··· groupby.Nth.time_series_nth_all                                                                                                                                                  ok
[ 63.73%] ··· ========== ============
                dtype
              ---------- ------------
               float32     57.7±1ms
               float64    59.1±0.7ms
               datetime   63.8±0.8ms
                object     68.1±1ms
              ========== ============

[ 64.22%] ··· groupby.Nth.time_series_nth_any                                                                                                                                                  ok
[ 64.22%] ··· ========== ============
                dtype
              ---------- ------------
               float32     60.9±1ms
               float64    58.0±0.7ms
               datetime   64.2±0.7ms
                object    68.2±0.4ms
              ========== ============

[ 64.71%] ··· groupby.RankWithTies.time_rank_ties                                                                                                                                              ok
[ 64.71%] ··· ============ ============= ============= ============= ============= =============
              --                                         tie_method
              ------------ ---------------------------------------------------------------------
                 dtype         first        average        dense          min           max
              ============ ============= ============= ============= ============= =============
                float64      2.88±0.1ms   2.89±0.05ms   2.86±0.04ms   2.85±0.04ms   2.98±0.05ms
                float32     2.89±0.07ms   2.91±0.05ms   2.89±0.07ms   2.85±0.05ms   2.85±0.05ms
                 int64      2.89±0.07ms   2.86±0.05ms   2.89±0.07ms   2.85±0.04ms   2.89±0.06ms
               datetime64   2.95±0.06ms   2.90±0.04ms    2.97±0.1ms   2.82±0.05ms   2.85±0.02ms
              ============ ============= ============= ============= ============= =============

[ 65.20%] ··· groupby.Size.time_category_size                                                                                                                                          8.02±0.2ms
[ 65.69%] ··· groupby.Size.time_dt_timegrouper_size                                                                                                                                    45.5±0.5ms
[ 66.18%] ··· groupby.Size.time_multi_size                                                                                                                                             18.9±0.4ms
[ 66.67%] ··· groupby.SumBools.time_groupby_sum_booleans                                                                                                                              2.42±0.04ms
[ 67.16%] ··· groupby.SumMultiLevel.time_groupby_sum_multiindex                                                                                                                       2.22±0.02ms
[ 67.65%] ··· groupby.Transform.time_transform_lambda_max                                                                                                                                797±10ms
[ 68.14%] ··· groupby.Transform.time_transform_multi_key1                                                                                                                              13.2±0.2ms
[ 68.63%] ··· groupby.Transform.time_transform_multi_key2                                                                                                                              11.6±0.1ms
[ 69.12%] ··· groupby.Transform.time_transform_multi_key3                                                                                                                              9.00±0.2ms
[ 69.61%] ··· groupby.Transform.time_transform_multi_key4                                                                                                                              5.01±0.1ms
[ 70.10%] ··· groupby.Transform.time_transform_ufunc_max                                                                                                                               9.14±0.2ms
[ 70.59%] ··· groupby.TransformBools.time_transform_mean                                                                                                                               11.9±0.1ms
[ 71.08%] ··· groupby.TransformNaN.time_first                                                                                                                                         4.12±0.09ms
[ 71.57%] ··· Setting up groupby.py:172                                                                                                                                                        ok
[ 71.57%] ··· groupby.CountMultiDtype.time_multi_count                                                                                                                                6.54±0.03ms
[ 72.06%] ··· Setting up groupby.py:198                                                                                                                                                        ok
[ 72.06%] ··· groupby.CountMultiInt.time_multi_int_count                                                                                                                               4.48±0.1ms
[ 72.55%] ··· groupby.CountMultiInt.time_multi_int_nunique                                                                                                                             12.1±0.2ms
[ 73.04%] ··· Setting up groupby.py:71                                                                                                                                                         ok
[ 73.04%] ··· groupby.Groups.time_series_groups                                                                                                                                                ok
[ 73.04%] ··· ============== ==========
                   key
              -------------- ----------
               int64_small    45.2±2ms
               int64_large    635±3ms
               object_small   89.2±2ms
               object_large   721±8ms
              ============== ==========

[ 73.53%] ··· Setting up groupby.py:260                                                                                                                                                        ok
[ 73.53%] ··· groupby.MultiColumn.time_col_select_lambda_sum                                                                                                                            111±0.9ms
[ 74.02%] ··· groupby.MultiColumn.time_col_select_numpy_sum                                                                                                                            18.5±0.3ms
[ 74.51%] ··· groupby.MultiColumn.time_cython_sum                                                                                                                                      21.2±0.3ms
[ 75.00%] ··· groupby.MultiColumn.time_lambda_sum                                                                                                                                         201±3ms
[ 75.00%] · For pandas commit 872a23bc <upstream/master> (round 2/2):
[ 75.00%] ·· Building for conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt...
[ 75.00%] ·· Benchmarking conda-py3.6-Cython-matplotlib-numexpr-numpy-openpyxl-pytables-pytest-scipy-sqlalchemy-xlrd-xlsxwriter-xlwt
[ 75.49%] ··· Setting up groupby.py:215                                                                                                                                                        ok
[ 75.49%] ··· groupby.AggFunctions.time_different_numpy_functions                                                                                                                        17.7±2ms
[ 75.98%] ··· groupby.AggFunctions.time_different_python_functions_multicol                                                                                                              32.0±2ms
[ 76.47%] ··· groupby.AggFunctions.time_different_python_functions_singlecol                                                                                                              396±9ms
[ 76.96%] ··· groupby.AggFunctions.time_different_str_functions                                                                                                                        17.6±0.9ms
[ 77.45%] ··· Setting up groupby.py:36                                                                                                                                                         ok
[ 77.45%] ··· groupby.Apply.time_copy_function_multi_col                                                                                                                                1.76±0.1s
[ 77.94%] ··· groupby.Apply.time_copy_overhead_single_col                                                                                                                                608±20ms
[ 78.43%] ··· groupby.Apply.time_scalar_function_multi_col                                                                                                                               31.7±2ms
[ 78.92%] ··· groupby.Apply.time_scalar_function_single_col                                                                                                                            8.97±0.3ms
[ 79.41%] ··· groupby.ApplyDictReturn.time_groupby_apply_dict_return                                                                                                                      125±5ms
[ 79.90%] ··· groupby.Categories.time_groupby_extra_cat_nosort                                                                                                                         13.1±0.7ms
[ 80.39%] ··· groupby.Categories.time_groupby_extra_cat_sort                                                                                                                          2.67±0.07ms
[ 80.88%] ··· groupby.Categories.time_groupby_nosort                                                                                                                                   16.6±0.6ms
[ 81.37%] ··· groupby.Categories.time_groupby_ordered_nosort                                                                                                                           16.1±0.7ms
[ 81.86%] ··· groupby.Categories.time_groupby_ordered_sort                                                                                                                             2.62±0.1ms
[ 82.35%] ··· groupby.Categories.time_groupby_sort                                                                                                                                    2.64±0.04ms
[ 82.84%] ··· groupby.DateAttributes.time_len_groupby_object                                                                                                                             380±20ms
[ 83.33%] ··· groupby.Datelike.time_sum                                                                                                                                                        ok
[ 83.33%] ··· =============== =============
                  grouper
              --------------- -------------
                period_range    3.14±0.2ms
                 date_range    3.90±0.05ms
               date_range_tz    4.32±0.2ms
              =============== =============

[ 83.82%] ··· groupby.Float32.time_sum                                                                                                                                                 11.7±0.3ms
[ 84.31%] ··· groupby.GroupByMethods.time_dtype_as_field                                                                                                                                       ok
[ 84.31%] ··· ========== ============== ============= ================
              --                                 application
              ------------------------- ------------------------------
                dtype        method         direct     transformation
              ========== ============== ============= ================
                 int          all          162±8μs        165±10μs
                 int          any          169±10μs       162±9μs
                 int         bfill         454±6μs        454±30μs
                 int         count         237±4μs        234±6μs
                 int        cumcount       393±5μs        402±9μs
                 int         cummax      1.06±0.01ms    1.06±0.05ms
                 int         cummin      1.04±0.02ms    1.11±0.06ms
                 int        cumprod      1.28±0.02ms     1.32±0.1ms
                 int         cumsum      1.09±0.02ms    1.05±0.06ms
                 int        describe      2.19±0.08s     2.22±0.07s
                 int         ffill         484±30μs       457±20μs
                 int         first         350±20μs       357±10μs
                 int          head         642±10μs       659±20μs
                 int          last         338±7μs        344±9μs
                 int          mad          902±20ms       872±40ms
                 int          max          368±10μs       369±10μs
                 int          min          370±6μs        360±4μs
                 int         median        668±30μs       622±40μs
                 int          mean         594±30μs       572±40μs
                 int        nunique        581±30μs       596±40μs
                 int       pct_change    2.12±0.08ms    2.11±0.09ms
                 int          prod         594±40μs       609±30μs
                 int        quantile       526±10μs       535±30μs
                 int          rank        1.41±0.1ms    1.39±0.05ms
                 int          sem        1.23±0.03ms    1.24±0.06ms
                 int         shift         253±5μs        255±10μs
                 int          size         189±10μs       222±50μs
                 int          skew         271±10ms       248±10ms
                 int          std          581±20μs       569±1μs
                 int          sum          620±10μs       618±5μs
                 int          tail         667±8μs        656±10μs
                 int         unique        239±10ms       245±6ms
                 int      value_counts   1.53±0.07ms     1.55±0.1ms
                 int          var          406±20μs       399±10μs
                float         all          161±10μs       158±9μs
                float         any          160±10μs       170±20μs
                float        bfill         393±20μs       397±5μs
                float        count         246±10μs       231±4μs
                float       cumcount       408±50μs       389±7μs
                float        cummax      1.03±0.03ms      981±9μs
                float        cummin      1.03±0.08ms      995±10μs
                float       cumprod        996±60μs       978±4μs
                float        cumsum        987±50μs       983±20μs
                float       describe      2.24±0.06s     2.22±0.07s
                float        ffill         392±20μs       398±20μs
                float        first         276±10μs       282±20μs
                float         head         654±4μs        645±7μs
                float         last         273±10μs       274±20μs
                float         mad          859±30ms       871±30ms
                float         max          286±2μs        289±8μs
                float         min          291±20μs       293±10μs
                float        median        317±10μs       315±20μs
                float         mean         275±10μs       279±10μs
                float       nunique        592±30μs       581±20μs
                float      pct_change     1.93±0.2ms    1.96±0.05ms
                float         prod         279±9μs        282±8μs
                float       quantile       528±20μs       541±30μs
                float         rank       1.42±0.08ms    1.37±0.03ms
                float         sem        1.13±0.05ms    1.12±0.05ms
                float        shift         226±10μs       226±5μs
                float         size         188±6μs        187±2μs
                float         skew         245±7ms        247±6ms
                float         std          457±7μs        466±10μs
                float         sum          278±4μs        279±9μs
                float         tail         670±9μs        705±50μs
                float        unique        248±8ms        254±9ms
                float     value_counts   1.65±0.08ms    1.70±0.07ms
                float         var          292±20μs       286±7μs
                object        all          720±6μs        731±40μs
                object        any          722±20μs       757±30μs
                object       bfill         585±4μs        594±30μs
                object       count         332±5μs        356±20μs
                object      cumcount       394±1μs        397±8μs
                object       cummax          n/a            n/a
                object       cummin          n/a            n/a
                object      cumprod          n/a            n/a
                object       cumsum          n/a            n/a
                object      describe         n/a            n/a
                object       ffill         592±60μs       614±30μs
                object       first         533±20μs       541±10μs
                object        head         719±7μs        702±20μs
                object        last         536±30μs       525±30μs
                object        mad            n/a            n/a
                object        max            n/a            n/a
                object        min            n/a            n/a
                object       median          n/a            n/a
                object        mean           n/a            n/a
                object      nunique        911±30μs       906±20μs
                object     pct_change        n/a            n/a
                object        prod           n/a            n/a
                object      quantile         n/a            n/a
                object        rank           n/a            n/a
                object        sem            n/a            n/a
                object       shift         354±7μs        345±6μs
                object        size         185±10μs       185±3μs
                object        skew           n/a            n/a
                object        std            n/a            n/a
                object        sum            n/a            n/a
                object        tail         734±10μs       761±40μs
                object       unique        295±4ms        287±8ms
                object    value_counts   1.45±0.08ms    1.45±0.02ms
                object        var            n/a            n/a
               datetime       all          169±7μs        162±3μs
               datetime       any          167±7μs        168±2μs
               datetime      bfill         401±8μs        395±5μs
               datetime      count         233±10μs       226±2μs
               datetime     cumcount       398±6μs        404±4μs
               datetime      cummax          n/a            n/a
               datetime      cummin      1.02±0.05ms      937±60μs
               datetime     cumprod          n/a            n/a
               datetime      cumsum          n/a            n/a
               datetime     describe         n/a            n/a
               datetime      ffill         394±5μs        393±8μs
               datetime      first         229±9μs        226±10μs
               datetime       head         639±6μs        641±10μs
               datetime       last         211±3μs        211±7μs
               datetime       mad            n/a            n/a
               datetime       max          236±6μs        231±5μs
               datetime       min          244±10μs       248±9μs
               datetime      median          n/a            n/a
               datetime       mean           n/a            n/a
               datetime     nunique        463±10μs       455±9μs
               datetime    pct_change        n/a            n/a
               datetime       prod           n/a            n/a
               datetime     quantile       459±20μs       461±20μs
               datetime       rank       1.22±0.05ms    1.20±0.03ms
               datetime       sem            n/a            n/a
               datetime      shift         238±10μs       227±7μs
               datetime       size         200±40μs       185±2μs
               datetime       skew           n/a            n/a
               datetime       std            n/a            n/a
               datetime       sum            n/a            n/a
               datetime       tail         666±7μs        654±10μs
               datetime      unique        267±5ms        271±10ms
               datetime   value_counts   1.41±0.05ms    1.45±0.08ms
               datetime       var            n/a            n/a
              ========== ============== ============= ================

[ 84.80%] ··· groupby.GroupByMethods.time_dtype_as_group                                                                                                                                       ok
[ 84.80%] ··· ========== ============== ============= ================
              --                                 application
              ------------------------- ------------------------------
                dtype        method         direct     transformation
              ========== ============== ============= ================
                 int          all          163±4μs        167±10μs
                 int          any          163±2μs        165±4μs
                 int         bfill         459±4μs        459±10μs
                 int         count         238±5μs        243±8μs
                 int        cumcount       402±6μs        411±10μs
                 int         cummax      1.07±0.02ms    1.08±0.02ms
                 int         cummin      1.06±0.02ms    1.06±0.04ms
                 int        cumprod      1.30±0.02ms    1.36±0.07ms
                 int         cumsum      1.08±0.01ms    1.09±0.06ms
                 int        describe      3.15±0.1s      3.19±0.07s
                 int         ffill         458±7μs        506±40μs
                 int         first         356±6μs        376±20μs
                 int          head         656±10μs       660±9μs
                 int          last         338±2μs        340±6μs
                 int          mad         1.27±0.04s     1.28±0.04s
                 int          max          364±6μs        370±30μs
                 int          min          360±2μs        364±10μs
                 int         median        625±10μs       626±40μs
                 int          mean         593±20μs       595±20μs
                 int        nunique        591±10μs       599±30μs
                 int       pct_change     2.21±0.1ms     2.14±0.1ms
                 int          prod         622±6μs        656±30μs
                 int        quantile       533±10μs       531±20μs
                 int          rank       1.39±0.04ms    1.36±0.02ms
                 int          sem        1.38±0.09ms    1.37±0.06ms
                 int         shift         251±6μs        261±9μs
                 int          size         186±9μs        186±6μs
                 int          skew         369±10ms       369±20ms
                 int          std          698±30μs       727±30μs
                 int          sum          630±20μs       637±40μs
                 int          tail         704±30μs       680±10μs
                 int         unique        362±9ms        357±10ms
                 int      value_counts   1.46±0.07ms    1.44±0.05ms
                 int          var          530±20μs       528±7μs
                float         all          167±5μs        162±1μs
                float         any          170±10μs       162±1μs
                float        bfill         445±10μs       440±7μs
                float        count         258±20μs       251±4μs
                float       cumcount       372±6μs        369±3μs
                float        cummax      1.11±0.02ms    1.08±0.04ms
                float        cummin      1.12±0.06ms    1.14±0.07ms
                float       cumprod      1.39±0.06ms    1.38±0.03ms
                float        cumsum      1.15±0.04ms    1.14±0.07ms
                float       describe      4.91±0.08s     4.84±0.09s
                float        ffill         446±20μs       445±8μs
                float        first         385±10μs       352±4μs
                float         head         649±9μs        633±9μs
                float         last         355±3μs        349±6μs
                float         mad         1.92±0.09s     1.94±0.02s
                float         max          360±2μs        367±3μs
                float         min          362±2μs        362±2μs
                float        median        660±9μs        668±6μs
                float         mean         657±9μs        636±4μs
                float       nunique        578±3μs        576±5μs
                float      pct_change    2.19±0.01ms    2.18±0.05ms
                float         prod         651±10μs       647±7μs
                float       quantile       531±7μs        528±10μs
                float         rank         1.40±0ms     1.38±0.01ms
                float         sem        1.26±0.01ms    1.24±0.02ms
                float        shift         236±2μs        241±2μs
                float         size         191±4μs       189±0.9μs
                float         skew         569±6ms        567±6ms
                float         std          588±10μs       584±5μs
                float         sum          653±5μs        642±4μs
                float         tail         648±8μs        646±7μs
                float        unique        551±3ms        558±6ms
                float     value_counts   1.44±0.02ms    1.45±0.03ms
                float         var          404±4μs        409±5μs
                object        all          158±2μs        158±3μs
                object        any          158±1μs        156±1μs
                object       bfill         317±8μs        316±9μs
                object       count         235±6μs        238±7μs
                object      cumcount       347±10μs       369±20μs
                object       cummax          n/a            n/a
                object       cummin          n/a            n/a
                object      cumprod          n/a            n/a
                object       cumsum          n/a            n/a
                object      describe         n/a            n/a
                object       ffill         316±20μs       323±7μs
                object       first         327±20μs       338±6μs
                object        head         584±8μs        585±10μs
                object        last         326±5μs        342±20μs
                object        mad            n/a            n/a
                object        max            n/a            n/a
                object        min            n/a            n/a
                object       median          n/a            n/a
                object        mean           n/a            n/a
                object      nunique        423±6μs        425±5μs
                object     pct_change        n/a            n/a
                object        prod           n/a            n/a
                object      quantile         n/a            n/a
                object        rank           n/a            n/a
                object        sem            n/a            n/a
                object       shift         238±4μs        233±3μs
                object        size         192±6μs        186±3μs
                object        skew           n/a            n/a
                object        std            n/a            n/a
                object        sum            n/a            n/a
                object        tail         606±10μs       619±40μs
                object       unique      2.16±0.02ms     2.64±0.4ms
                object    value_counts   1.24±0.01ms    1.24±0.03ms
                object        var            n/a            n/a
               datetime       all          163±2μs        172±10μs
               datetime       any          164±5μs        166±9μs
               datetime      bfill         320±20μs       316±4μs
               datetime      count         254±30μs       252±10μs
               datetime     cumcount       374±5μs        368±10μs
               datetime      cummax          n/a            n/a
               datetime      cummin      1.07±0.01ms    1.09±0.03ms
               datetime     cumprod          n/a            n/a
               datetime      cumsum          n/a            n/a
               datetime     describe         n/a            n/a
               datetime      ffill         319±7μs        319±6μs
               datetime      first         361±20μs       355±8μs
               datetime       head         631±60μs       624±2μs
               datetime       last         347±5μs        343±5μs
               datetime       mad            n/a            n/a
               datetime       max          364±5μs        382±20μs
               datetime       min          370±4μs        364±20μs
               datetime      median          n/a            n/a
               datetime       mean           n/a            n/a
               datetime     nunique        590±7μs        586±10μs
               datetime    pct_change        n/a            n/a
               datetime       prod           n/a            n/a
               datetime     quantile       528±10μs       532±30μs
               datetime       rank       1.37±0.02ms    1.39±0.04ms
               datetime       sem            n/a            n/a
               datetime      shift         239±20μs       242±4μs
               datetime       size         195±3μs        195±6μs
               datetime       skew           n/a            n/a
               datetime       std            n/a            n/a
               datetime       sum            n/a            n/a
               datetime       tail         657±10μs       640±10μs
               datetime      unique        618±30ms       615±20ms
               datetime   value_counts   1.49±0.02ms    1.45±0.03ms
               datetime       var            n/a            n/a
              ========== ============== ============= ================

[ 85.29%] ··· groupby.GroupManyLabels.time_sum                                                                                                                                                 ok
[ 85.29%] ··· ======= ============
               ncols
              ------- ------------
                 1     3.23±0.3ms
                1000   6.74±0.1ms
              ======= ============

[ 85.78%] ··· groupby.GroupStrings.time_multi_columns                                                                                                                                     615±5ms
[ 86.27%] ··· groupby.Int64.time_overflow                                                                                                                                                 783±9ms
[ 86.76%] ··· groupby.Nth.time_frame_nth                                                                                                                                                       ok
[ 86.76%] ··· ========== ============
                dtype
              ---------- ------------
               float32    26.7±0.9ms
               float64     27.1±2ms
               datetime   25.7±0.5ms
                object    29.0±0.6ms
              ========== ============

[ 87.25%] ··· groupby.Nth.time_frame_nth_any                                                                                                                                                   ok
[ 87.25%] ··· ========== ============
                dtype
              ---------- ------------
               float32     58.6±2ms
               float64    56.2±0.5ms
               datetime   62.2±0.8ms
                object     65.0±2ms
              ========== ============

[ 87.75%] ··· groupby.Nth.time_groupby_nth_all                                                                                                                                                 ok
[ 87.75%] ··· ========== ============
                dtype
              ---------- ------------
               float32     50.8±2ms
               float64    49.8±0.5ms
               datetime    57.2±4ms
                object     58.0±2ms
              ========== ============

[ 88.24%] ··· groupby.Nth.time_series_nth                                                                                                                                                      ok
[ 88.24%] ··· ========== ============
                dtype
              ---------- ------------
               float32    29.7±0.8ms
               float64     28.1±1ms
               datetime   32.5±0.5ms
                object     32.3±1ms
              ========== ============

[ 88.73%] ··· groupby.Nth.time_series_nth_all                                                                                                                                                  ok
[ 88.73%] ··· ========== ============
                dtype
              ---------- ------------
               float32     58.0±1ms
               float64    57.9±0.5ms
               datetime    63.7±1ms
                object     70.9±5ms
              ========== ============

[ 89.22%] ··· groupby.Nth.time_series_nth_any                                                                                                                                                  ok
[ 89.22%] ··· ========== ==========
                dtype
              ---------- ----------
               float32    58.3±2ms
               float64    60.8±3ms
               datetime   66.1±4ms
                object    69.9±2ms
              ========== ==========

[ 89.71%] ··· groupby.RankWithTies.time_rank_ties                                                                                                                                              ok
[ 89.71%] ··· ============ ============= ============= ============= ============ =============
              --                                        tie_method
              ------------ --------------------------------------------------------------------
                 dtype         first        average        dense         min           max
              ============ ============= ============= ============= ============ =============
                float64     2.92±0.09ms    2.90±0.2ms   2.91±0.06ms   2.86±0.2ms    2.87±0.2ms
                float32     2.94±0.08ms   3.00±0.09ms    2.90±0.1ms   3.03±0.3ms   2.93±0.09ms
                 int64       3.39±0.4ms   2.92±0.05ms   2.87±0.06ms   2.90±0.3ms    2.99±0.2ms
               datetime64   2.85±0.08ms    2.86±0.1ms   2.89±0.07ms   3.33±0.6ms    2.92±0.4ms
              ============ ============= ============= ============= ============ =============

[ 90.20%] ··· groupby.Size.time_category_size                                                                                                                                          8.20±0.5ms
[ 90.69%] ··· groupby.Size.time_dt_timegrouper_size                                                                                                                                      44.7±1ms
[ 91.18%] ··· groupby.Size.time_multi_size                                                                                                                                             18.4±0.7ms
[ 91.67%] ··· groupby.SumBools.time_groupby_sum_booleans                                                                                                                              2.44±0.06ms
[ 92.16%] ··· groupby.SumMultiLevel.time_groupby_sum_multiindex                                                                                                                       2.23±0.04ms
[ 92.65%] ··· groupby.Transform.time_transform_lambda_max                                                                                                                                809±30ms
[ 93.14%] ··· groupby.Transform.time_transform_multi_key1                                                                                                                                13.7±1ms
[ 93.63%] ··· groupby.Transform.time_transform_multi_key2                                                                                                                              11.3±0.2ms
[ 94.12%] ··· groupby.Transform.time_transform_multi_key3                                                                                                                              9.12±0.2ms
[ 94.61%] ··· groupby.Transform.time_transform_multi_key4                                                                                                                              4.97±0.1ms
[ 95.10%] ··· groupby.Transform.time_transform_ufunc_max                                                                                                                                 9.21±1ms
[ 95.59%] ··· groupby.TransformBools.time_transform_mean                                                                                                                               11.4±0.3ms
[ 96.08%] ··· groupby.TransformNaN.time_first                                                                                                                                         4.17±0.06ms
[ 96.57%] ··· Setting up groupby.py:172                                                                                                                                                        ok
[ 96.57%] ··· groupby.CountMultiDtype.time_multi_count                                                                                                                                 6.66±0.2ms
[ 97.06%] ··· Setting up groupby.py:198                                                                                                                                                        ok
[ 97.06%] ··· groupby.CountMultiInt.time_multi_int_count                                                                                                                               4.68±0.1ms
[ 97.55%] ··· groupby.CountMultiInt.time_multi_int_nunique                                                                                                                             12.4±0.2ms
[ 98.04%] ··· Setting up groupby.py:71                                                                                                                                                         ok
[ 98.04%] ··· groupby.Groups.time_series_groups                                                                                                                                                ok
[ 98.04%] ··· ============== ==========
                   key
              -------------- ----------
               int64_small    46.6±1ms
               int64_large    658±10ms
               object_small   91.7±3ms
               object_large   755±50ms
              ============== ==========

[ 98.53%] ··· Setting up groupby.py:260                                                                                                                                                        ok
[ 98.53%] ··· groupby.MultiColumn.time_col_select_lambda_sum                                                                                                                              109±3ms
[ 99.02%] ··· groupby.MultiColumn.time_col_select_numpy_sum                                                                                                                            18.2±0.5ms
[ 99.51%] ··· groupby.MultiColumn.time_cython_sum                                                                                                                                      21.5±0.4ms
[100.00%] ··· groupby.MultiColumn.time_lambda_sum                                                                                                                                         204±9ms

BENCHMARKS NOT SIGNIFICANTLY CHANGED.
```
</details>
@jreback Done.
@jreback Done. Some checks are failing, but seems unrelated to this PR?
thanks @adbull