MCPcopy
hub / github.com/pandas-dev/pandas / from_product

Method from_product

pandas/core/indexes/multi.py:594–650  ·  view source on GitHub ↗

Make a MultiIndex from the cartesian product of multiple iterables. Parameters ---------- iterables : list / sequence of iterables Each iterable has unique labels for each level of the index. sortorder : int or None Level of sortednes

(
        cls,
        iterables: Sequence[Iterable[Hashable]],
        sortorder: int | None = None,
        names: Sequence[Hashable] | Hashable | lib.NoDefault = lib.no_default,
    )

Source from the content-addressed store, hash-verified

592
593 @classmethod
594 def from_product(
595 cls,
596 iterables: Sequence[Iterable[Hashable]],
597 sortorder: int | None = None,
598 names: Sequence[Hashable] | Hashable | lib.NoDefault = lib.no_default,
599 ) -> MultiIndex:
600 """
601 Make a MultiIndex from the cartesian product of multiple iterables.
602
603 Parameters
604 ----------
605 iterables : list / sequence of iterables
606 Each iterable has unique labels for each level of the index.
607 sortorder : int or None
608 Level of sortedness (must be lexicographically sorted by that
609 level).
610 names : list / sequence of str, optional
611 Names for the levels in the index.
612 If not explicitly provided, names will be inferred from the
613 elements of iterables if an element has a name attribute.
614
615 Returns
616 -------
617 MultiIndex
618
619 See Also
620 --------
621 MultiIndex.from_arrays : Convert list of arrays to MultiIndex.
622 MultiIndex.from_tuples : Convert list of tuples to MultiIndex.
623 MultiIndex.from_frame : Make a MultiIndex from a DataFrame.
624
625 Examples
626 --------
627 >>> numbers = [0, 1, 2]
628 >>> colors = ["green", "purple"]
629 >>> pd.MultiIndex.from_product([numbers, colors], names=["number", "color"])
630 MultiIndex([(0, 'green'),
631 (0, 'purple'),
632 (1, 'green'),
633 (1, 'purple'),
634 (2, 'green'),
635 (2, 'purple')],
636 names=['number', 'color'])
637 """
638
639 if not is_list_like(iterables):
640 raise TypeError("Input must be a list / sequence of iterables.")
641 if is_iterator(iterables):
642 iterables = list(iterables)
643
644 codes, levels = factorize_from_iterables(iterables)
645 if names is lib.no_default:
646 names = [getattr(it, "name", None) for it in iterables]
647
648 # codes are all ndarrays, so cartesian_product is lossless
649 codes = cartesian_product(codes)
650 return cls(levels, codes, sortorder=sortorder, names=names)
651

Callers 15

setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80
setupMethod · 0.80

Calls 3

factorize_from_iterablesFunction · 0.90
cartesian_productFunction · 0.85
clsFunction · 0.85