def METHOD_NAME(self, *, align: bool = False) -> pd.DataFrame:
    """Return the data series as a pandas.Dataframe.
    Parameters
    ==========
    align : bool, optional
        If True, change the absolute timestamps into time deltas from the first
        sample of each series, so that different series can be visualized side by
        side. If False (the default), use absolute timestamps.
    """
    import pandas as pd
    ss = {}
    for label, s_list in self.samples.items():
        assert s_list  # There's always at least one sample
        s = pd.DataFrame(s_list).set_index(0)[1]
        s.index = pd.to_datetime(s.index, unit="s")
        s.name = label
        if align:
            # convert datetime to timedelta from the first sample
            s.index -= s.index[0]
        ss[label] = s
    df = pd.DataFrame(ss)
    if len(ss) > 1:
        # Forward-fill NaNs in the middle of a series created either by overlapping
        # sampling time range or by align=True. Do not ffill series beyond their
        # last sample.
        df = df.ffill().where(~pd.isna(df.bfill()))
    return df