diff --git a/python/ray/dataframe/dataframe.py b/python/ray/dataframe/dataframe.py index 41924d801..a178997b0 100644 --- a/python/ray/dataframe/dataframe.py +++ b/python/ray/dataframe/dataframe.py @@ -78,6 +78,10 @@ class DataFrame(object): col_metadata (_IndexMetadata): Metadata for the new dataframe's columns """ + if isinstance(data, DataFrame): + self._frame_data = data._frame_data + return + self._dtypes_cache = dtypes_cache # Check type of data and use appropriate constructor @@ -167,6 +171,27 @@ class DataFrame(object): if self._dtypes_cache is None: self._correct_dtypes() + def _get_frame_data(self): + data = {} + data['blocks'] = self._block_partitions + data['col_metadata'] = self._col_metadata + data['row_metadata'] = self._row_metadata + data['columns'] = self.columns + data['index'] = self.index + data['dtypes'] = self._dtypes_cache + + return data + + def _set_frame_data(self, data): + self._block_partitions = data['blocks'] + self._col_metadata = data['col_metadata'] + self._row_metadata = data['row_metadata'] + self.columns = data['columns'] + self.index = data['index'] + self._dtypes_cache = data['dtypes'] + + _frame_data = property(_get_frame_data, _set_frame_data) + def _get_row_partitions(self): return [_blocks_to_row.remote(*part) for part in self._block_partitions]