MCPcopy Index your code
hub / github.com/dask/dask / JoinRecursive

Class JoinRecursive

dask/dataframe/dask_expr/_merge.py:907–956  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

905
906
907class JoinRecursive(Expr):
908 _parameters = ["frames", "how"]
909 _defaults = {"right_index": True, "how": "outer"}
910
911 @functools.cached_property
912 def _meta(self):
913 if len(self.frames) == 1:
914 return self.frames[0]._meta
915 else:
916 return self.frames[0]._meta.join(
917 [op._meta for op in self.frames[1:]],
918 )
919
920 def _divisions(self):
921 return self.lower_completely()._divisions()
922
923 def _lower(self):
924 if self.how == "left":
925 right = self._recursive_join(self.frames[1:])
926 return Merge(
927 self.frames[0],
928 right,
929 how=self.how,
930 left_index=True,
931 right_index=True,
932 )
933
934 return self._recursive_join(self.frames)
935
936 def _recursive_join(self, frames):
937 if len(frames) == 1:
938 return frames[0]
939
940 if len(frames) == 2:
941 return Merge(
942 frames[0],
943 frames[1],
944 how="outer",
945 left_index=True,
946 right_index=True,
947 )
948
949 midx = len(frames) // 2
950
951 return self._recursive_join(
952 [
953 self._recursive_join(frames[:midx]),
954 self._recursive_join(frames[midx:]),
955 ],
956 )

Callers 1

joinMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…