1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
| """
| Provide basic components for groupby.
| """
| from __future__ import annotations
|
| import dataclasses
| from typing import Hashable
|
|
| @dataclasses.dataclass(order=True, frozen=True)
| class OutputKey:
| label: Hashable
| position: int
|
|
| # special case to prevent duplicate plots when catching exceptions when
| # forwarding methods from NDFrames
| plotting_methods = frozenset(["plot", "hist"])
|
| # cythonized transformations or canned "agg+broadcast", which do not
| # require postprocessing of the result by transform.
| cythonized_kernels = frozenset(["cumprod", "cumsum", "shift", "cummin", "cummax"])
|
| # List of aggregation/reduction functions.
| # These map each group to a single numeric value
| reduction_kernels = frozenset(
| [
| "all",
| "any",
| "corrwith",
| "count",
| "first",
| "idxmax",
| "idxmin",
| "last",
| "max",
| "mean",
| "median",
| "min",
| "nunique",
| "prod",
| # as long as `quantile`'s signature accepts only
| # a single quantile value, it's a reduction.
| # GH#27526 might change that.
| "quantile",
| "sem",
| "size",
| "skew",
| "std",
| "sum",
| "var",
| ]
| )
|
| # List of transformation functions.
| # a transformation is a function that, for each group,
| # produces a result that has the same shape as the group.
|
|
| transformation_kernels = frozenset(
| [
| "bfill",
| "cumcount",
| "cummax",
| "cummin",
| "cumprod",
| "cumsum",
| "diff",
| "ffill",
| "fillna",
| "ngroup",
| "pct_change",
| "rank",
| "shift",
| ]
| )
|
| # these are all the public methods on Grouper which don't belong
| # in either of the above lists
| groupby_other_methods = frozenset(
| [
| "agg",
| "aggregate",
| "apply",
| "boxplot",
| # corr and cov return ngroups*ncolumns rows, so they
| # are neither a transformation nor a reduction
| "corr",
| "cov",
| "describe",
| "dtypes",
| "expanding",
| "ewm",
| "filter",
| "get_group",
| "groups",
| "head",
| "hist",
| "indices",
| "ndim",
| "ngroups",
| "nth",
| "ohlc",
| "pipe",
| "plot",
| "resample",
| "rolling",
| "tail",
| "take",
| "transform",
| "sample",
| "value_counts",
| ]
| )
| # Valid values of `name` for `groupby.transform(name)`
| # NOTE: do NOT edit this directly. New additions should be inserted
| # into the appropriate list above.
| transform_kernel_allowlist = reduction_kernels | transformation_kernels
|
|