@@ -389,11 +389,14 @@ def from_product(cls, f, learner_type, learner_kwargs, combos):
389389 learners .append (learner )
390390 return cls (learners , cdims = arguments )
391391
392- def to_dataframe (self , ** kwargs ):
392+ def to_dataframe (self , index_name : str = "learner_index" , ** kwargs ):
393393 """Return the data as a concatenated `pandas.DataFrame` from child learners.
394394
395395 Parameters
396396 ----------
397+ index_name : str, optional
398+ The name of the index column indicating the learner index,
399+ by default "learner_index".
397400 **kwargs : dict
398401 Keyword arguments passed to each ``child_learner.to_dataframe(**kwargs)``.
399402
@@ -408,10 +411,33 @@ def to_dataframe(self, **kwargs):
408411 """
409412 if not with_pandas :
410413 raise ImportError ("pandas is not installed." )
411- dfs = [learner .to_dataframe (** kwargs ) for learner in self .learners ]
414+ dfs = []
415+ for i , learner in enumerate (self .learners ):
416+ df = learner .to_dataframe (** kwargs )
417+ cols = list (df .columns )
418+ df [index_name ] = i
419+ df = df [[index_name ] + cols ]
420+ dfs .append (df )
412421 df = pandas .concat (dfs , axis = 0 , ignore_index = True )
413422 return df
414423
424+ def load_dataframe (
425+ self , df : pandas .DataFrame , index_name : str = "learner_index" , ** kwargs
426+ ):
427+ """Load the data from a `pandas.DataFrame` into the child learners.
428+
429+ Parameters
430+ ----------
431+ df : pandas.DataFrame
432+ DataFrame with the data to load.
433+ index_name : str, optional
434+ The ``index_name`` used in `to_dataframe`, by default "learner_index".
435+ **kwargs : dict
436+ Keyword arguments passed to each ``child_learner.load_dataframe(**kwargs)``.
437+ """
438+ for i , gr in df .groupby (index_name ):
439+ self .learners [i ].load_dataframe (gr , ** kwargs )
440+
415441 def save (self , fname , compress = True ):
416442 """Save the data of the child learners into pickle files
417443 in a directory.
0 commit comments