BUG/ENH: group cummin/max handle skipna
State: closed

- [x] xref #34047
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

Built on #41853

Previously `skipna` was just ignored, so there was a behavior difference between cummin/max and other cumulative functions eg

```
>>> df = pd.DataFrame({"a": [1, np.nan, 1]})
>>> df.groupby([1, 1, 1]).cumsum(skipna=False)
     a
0  1.0
1  NaN
2  NaN
>>> df.groupby([1, 1, 1]).cummax(skipna=False)
     a
0  1.0
1  NaN
2  1.0
```

Benchmarks unaffected:
<details>

```
       before           after         ratio
     [3f67dc33]       [3c869ce4]
     <master>         <group_cummin_max_skipna>
         21.9±1ms         21.1±2ms     0.96  groupby.CumminMax.time_frame_transform('Float64', 'cummax')
         22.8±2ms         23.4±2ms     1.02  groupby.CumminMax.time_frame_transform('Float64', 'cummin')
         19.3±4ms         18.1±1ms     0.94  groupby.CumminMax.time_frame_transform('Int64', 'cummax')
         26.3±2ms         22.2±3ms    ~0.84  groupby.CumminMax.time_frame_transform('Int64', 'cummin')
       19.7±0.7ms         13.7±1ms    ~0.70  groupby.CumminMax.time_frame_transform('float64', 'cummax')
         16.4±1ms       13.9±0.2ms    ~0.84  groupby.CumminMax.time_frame_transform('float64', 'cummin')
         34.6±3ms         31.1±4ms    ~0.90  groupby.CumminMax.time_frame_transform('int64', 'cummax')
       30.5±0.6ms       29.1±0.4ms     0.95  groupby.CumminMax.time_frame_transform('int64', 'cummin')
         23.3±2ms         21.0±3ms    ~0.90  groupby.CumminMax.time_frame_transform_many_nulls('Float64', 'cummax')
         21.1±3ms         21.3±3ms     1.01  groupby.CumminMax.time_frame_transform_many_nulls('Float64', 'cummin')
         21.1±1ms         22.2±2ms     1.06  groupby.CumminMax.time_frame_transform_many_nulls('Int64', 'cummax')
         19.7±2ms         20.1±3ms     1.02  groupby.CumminMax.time_frame_transform_many_nulls('Int64', 'cummin')
       16.1±0.8ms         13.6±1ms    ~0.85  groupby.CumminMax.time_frame_transform_many_nulls('float64', 'cummax')
         13.9±1ms       14.0±0.8ms     1.01  groupby.CumminMax.time_frame_transform_many_nulls('float64', 'cummin')
         15.8±1ms       14.2±0.2ms    ~0.90  groupby.CumminMax.time_frame_transform_many_nulls('int64', 'cummax')
       15.0±0.6ms       16.6±0.9ms    ~1.11  groupby.CumminMax.time_frame_transform_many_nulls('int64', 'cummin')
```

</details>

Labels:
name: Bug
name: Groupby
name: Missing-data
description: np.nan, pd.NaT, pd.NA, dropna, isnull, interpolate
name: Algos
description: Non-arithmetic algos: value_counts, factorize, sorting, isin, clip, shift, diff

Comments:
does this close #34047 ? (i guess cumsum missing?)
cc @rhshadrach @jbrockmendel 
> does this close #34047 ? (i guess cumsum missing?)

`cumsum` respects `skipna` (at least the groupby version). I don't think it closes the issue because the issue was primarily about using `agg` with these functions
@jbrockmendel - sounds like you're good here?

@mzeitlin11 - can you merge master.
thanks @mzeitlin11 very nice!