code: def _drop_unused_columns(
      df: pd.DataFrame, *column_names: str | None
  ) -> pd.DataFrame:
      """Returns a subset of df, selecting only column_names that aren't None."""
  
      # We can't just call set(col_names) because sets don't have stable ordering,
      # which means tests that depend on ordering will fail.
      # Performance-wise, it's not a problem, though, since this function is only ever
      # used on very small lists.
      seen = set()
      keep = []
  
      for x in column_names:
          if x is None:
              continue
          if x in seen:
              continue
          seen.add(x)
          keep.append(x)
  
      return df[keep]
  
imports: from __future__ import annotations
  from contextlib import nullcontext
  from datetime import date
  from enum import Enum
  from typing import TYPE_CHECKING, Any, Collection, Dict, List, Sequence, Tuple, cast
  import pandas
  from pandas.api.types import infer_dtype, is_integer_dtype
  from typing_extensions import Literal
  import streamlit.elements.arrow_vega_lite
  from streamlit import type_util
  from streamlit.color_util import Color, is_color_like, is_color_tuple_like, is_hex_color_like, to_css_color
  from streamlit.elements.altair_utils import AddRowsMetadata
  from streamlit.elements.arrow import Data
  from streamlit.elements.utils import last_index_for_melted_dataframes
  from streamlit.errors import Error, StreamlitAPIException
  from streamlit.proto.ArrowVegaLiteChart_pb2 import ArrowVegaLiteChart
  from streamlit.runtime.metrics_util import gather_metrics
label_desc: Use image node_id 6 for calling a global function with example usage: _drop_unused_columns(df) and returns: df