code: def fetch_values(self, *, include_timestamp=True):
      import pandas as pd
  
      limit = 1000
      val = self._fetch_values_from_backend(0, limit)
      data = val.values
      offset = limit
  
      def make_row(
          entry: Row,
      ) -> Dict[str, Union[str, float, datetime]]:
          row: Dict[str, Union[str, float, datetime]] = dict()
          row["step"] = entry.step
          row["value"] = entry.value
          if include_timestamp:
              row["timestamp"] = datetime.fromtimestamp(
                  entry.timestampMillis / 1000
              )
          return row
  
      while offset < val.totalItemCount:
          batch = self._fetch_values_from_backend(offset, limit)
          data.extend(batch.values)
          offset += limit
  
      rows = dict(
          (n, make_row(entry)) for (n, entry) in enumerate(data)
      )
  
      df = pd.DataFrame.from_dict(data=rows, orient="index")
      return df
  
file_path: neptune-client/src/neptune/attributes/series/fetchable_series.py
imports: import abc
  from datetime import datetime
  from typing import Dict, Generic, TypeVar, Union
  from neptune.internal.backends.api_model import FloatSeriesValues, StringSeriesValues
label_desc: Use image node_id 2 for calling the FetchableSeries obj's underlying member method code with example usage: obj.fetch_values() and returns: df, row