class_docstr: Wrapper Class for ``make_dataframe_part``
  Makes a timeseries partition.
class_docstr_tok: ["Wrapper","Class","for","``","make_dataframe_part","``","Makes","a","timeseries","partition","."]
docstr: Return a new MakeTimeseriesPart object with
  a sub-column projection.
docstr_tok: ["Return","a","new","MakeTimeseriesPart","object","with","a","sub-column","projection","."]
code: def project_columns(self, columns):
      """Return a new MakeTimeseriesPart object with
      a sub-column projection.
      """
      if columns == self.columns:
          return self
      return MakeDataframePart(
          self.index_dtype,
          self.dtypes,
          self.kwargs,
          columns=columns,
      )
  
imports: from __future__ import annotations
  import re
  import string
  from dataclasses import asdict, dataclass, field
  from typing import Any, Callable, cast
  import numpy
  import pandas
  from dask.dataframe._compat import PANDAS_GE_220
  from dask.dataframe._pyarrow import is_object_string_dtype
  from dask.dataframe.core import tokenize
  from dask.dataframe.io.io import from_map
  from dask.dataframe.io.utils import DataFrameIOFunction
  from dask.utils import random_state_data
label_desc: Use image node_id 3 for calling the MakeDataframePart obj's underlying member method code with example usage: obj.project_columns(columns) and returns: MakeDataframePart, self