(
self, result: Series | DataFrame, qs: npt.NDArray[np.float64] | None = None
)
| 1243 | |
| 1244 | @final |
| 1245 | def _insert_inaxis_grouper( |
| 1246 | self, result: Series | DataFrame, qs: npt.NDArray[np.float64] | None = None |
| 1247 | ) -> DataFrame: |
| 1248 | if isinstance(result, Series): |
| 1249 | result = result.to_frame() |
| 1250 | |
| 1251 | n_groupings = len(self._grouper.groupings) |
| 1252 | |
| 1253 | if qs is not None: |
| 1254 | result.insert( |
| 1255 | 0, f"level_{n_groupings}", np.tile(qs, len(result) // len(qs)) |
| 1256 | ) |
| 1257 | |
| 1258 | # zip in reverse so we can always insert at loc 0 |
| 1259 | for level, (name, lev) in enumerate( |
| 1260 | zip( |
| 1261 | reversed(self._grouper.names), |
| 1262 | self._grouper.get_group_levels(), |
| 1263 | strict=True, |
| 1264 | ) |
| 1265 | ): |
| 1266 | if name is None: |
| 1267 | # Behave the same as .reset_index() when a level is unnamed |
| 1268 | name = ( |
| 1269 | "index" |
| 1270 | if n_groupings == 1 and qs is None |
| 1271 | else f"level_{n_groupings - level - 1}" |
| 1272 | ) |
| 1273 | |
| 1274 | # GH #28549 |
| 1275 | # When using .apply(-), name will be in columns already |
| 1276 | if name not in result.columns: |
| 1277 | # if in_axis: |
| 1278 | if qs is None: |
| 1279 | result.insert(0, name, lev) |
| 1280 | else: |
| 1281 | result.insert(0, name, Index(np.repeat(lev, len(qs)), copy=False)) |
| 1282 | |
| 1283 | return result |
| 1284 | |
| 1285 | @final |
| 1286 | def _wrap_aggregated_output( |
no test coverage detected