MCPcopy
hub / github.com/dask/dask / _nonempty_index

Function _nonempty_index

dask/dataframe/backends.py:378–449  ·  view source on GitHub ↗
(idx)

Source from the content-addressed store, hash-verified

376
377@meta_nonempty.register(pd.Index)
378def _nonempty_index(idx):
379 typ = type(idx)
380 if typ is pd.RangeIndex:
381 return pd.RangeIndex(2, name=idx.name, dtype=idx.dtype)
382 elif is_any_real_numeric_dtype(idx):
383 return typ([1, 2], name=idx.name, dtype=idx.dtype)
384 elif typ is pd.DatetimeIndex:
385 start = "1970-01-01"
386 # Need a non-monotonic decreasing index to avoid issues with
387 # partial string indexing see https://github.com/dask/dask/issues/2389
388 # and https://github.com/pandas-dev/pandas/issues/16515
389 # This doesn't mean `_meta_nonempty` should ever rely on
390 # `self.monotonic_increasing` or `self.monotonic_decreasing`
391 try:
392 return pd.date_range(
393 start=start,
394 periods=2,
395 freq=idx.freq,
396 tz=idx.tz,
397 name=idx.name,
398 unit=idx.unit,
399 )
400 except ValueError: # older pandas versions
401 data = [start, "1970-01-02"] if idx.freq is None else None
402 return pd.DatetimeIndex(
403 data, start=start, periods=2, freq=idx.freq, tz=idx.tz, name=idx.name
404 )
405 elif typ is pd.PeriodIndex:
406 return pd.period_range(
407 start="1970-01-01", periods=2, freq=idx.freq, name=idx.name
408 )
409 elif typ is pd.TimedeltaIndex:
410 start = np.timedelta64(1, idx.unit)
411 try:
412 return pd.timedelta_range(
413 start=start, periods=2, freq=idx.freq, name=idx.name
414 )
415 except ValueError: # older pandas versions
416 start = np.timedelta64(1, "D")
417 data = [start, start + 1] if idx.freq is None else None
418 return pd.TimedeltaIndex(
419 data, start=start, periods=2, freq=idx.freq, name=idx.name
420 )
421 elif typ is pd.CategoricalIndex:
422 if len(idx.categories) == 0:
423 data = pd.Categorical(_nonempty_index(idx.categories), ordered=idx.ordered)
424 else:
425 data = pd.Categorical.from_codes(
426 [-1, 0], categories=idx.categories, ordered=idx.ordered
427 )
428 return pd.CategoricalIndex(data, name=idx.name)
429 elif typ is pd.MultiIndex:
430 levels = [_nonempty_index(l) for l in idx.levels]
431 codes = [[0, 0] for i in idx.levels]
432 try:
433 return pd.MultiIndex(levels=levels, codes=codes, names=idx.names)
434 except TypeError: # older pandas versions
435 return pd.MultiIndex(levels=levels, labels=codes, names=idx.names)

Callers 1

_nonempty_seriesFunction · 0.85

Calls 2

typenameFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…