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