| 2196 | |
| 2197 | |
| 2198 | class SeriesGroupBy(GroupBy): |
| 2199 | def __init__( |
| 2200 | self, |
| 2201 | obj, |
| 2202 | by, |
| 2203 | group_keys=True, |
| 2204 | sort=None, |
| 2205 | observed=None, |
| 2206 | dropna=None, |
| 2207 | slice=None, |
| 2208 | ): |
| 2209 | # Raise pandas errors if applicable |
| 2210 | if isinstance(obj, Series): |
| 2211 | if isinstance(by, FrameBase): |
| 2212 | obj._meta.groupby(by._meta, **_as_dict("observed", observed)) |
| 2213 | elif isinstance(by, (list, tuple)) and any( |
| 2214 | isinstance(x, FrameBase) for x in by |
| 2215 | ): |
| 2216 | metas = [x._meta if isinstance(x, FrameBase) else x for x in by] |
| 2217 | obj._meta.groupby(metas, **_as_dict("observed", observed)) |
| 2218 | elif isinstance(by, list): |
| 2219 | if len(by) == 0: |
| 2220 | raise ValueError("No group keys passed!") |
| 2221 | |
| 2222 | non_series_items = [item for item in by if not isinstance(item, Series)] |
| 2223 | obj._meta.groupby(non_series_items, **_as_dict("observed", observed)) |
| 2224 | else: |
| 2225 | obj._meta.groupby(by, **_as_dict("observed", observed)) |
| 2226 | |
| 2227 | super().__init__( |
| 2228 | obj, |
| 2229 | by=by, |
| 2230 | group_keys=group_keys, |
| 2231 | slice=slice, |
| 2232 | observed=observed, |
| 2233 | dropna=dropna, |
| 2234 | sort=sort, |
| 2235 | ) |
| 2236 | |
| 2237 | @derived_from(pd.core.groupby.SeriesGroupBy) |
| 2238 | def value_counts(self, **kwargs): |
| 2239 | return self._single_agg(ValueCounts, **kwargs) |
| 2240 | |
| 2241 | @derived_from(pd.core.groupby.SeriesGroupBy) |
| 2242 | def unique(self, **kwargs): |
| 2243 | return self._single_agg(Unique, **kwargs) |
| 2244 | |
| 2245 | def idxmin( |
| 2246 | self, |
| 2247 | split_every=None, |
| 2248 | split_out=None, |
| 2249 | skipna=True, |
| 2250 | numeric_only=False, |
| 2251 | **kwargs, |
| 2252 | ): |
| 2253 | # pandas doesn't support numeric_only here, which is odd |
| 2254 | return self._single_agg( |
| 2255 | IdxMin, |
no outgoing calls
no test coverage detected