code: def _load_item_df(
      size, item_datapath, movie_col, title_col, genres_col, year_col
  ):
      """Loads Movie info"""
      if title_col is None and genres_col is None and year_col is None:
          return None
  
      item_header = [movie_col]
      usecols = [0]
  
      # Year is parsed from title
      if title_col is not None or year_col is not None:
          item_header.append("title_year")
          usecols.append(1)
  
      genres_header_100k = None
      if genres_col is not None:
          # 100k data's movie genres are encoded as a binary array (the last 19 fields)
          # For details, see https://files.grouplens.org/datasets/movielens/ml-100k-README.txt
          if size == "100k":
              genres_header_100k = [*(str(i) for i in range(19))]
              item_header.extend(genres_header_100k)
              usecols.extend([*range(5, 24)])  # genres columns
          else:
              item_header.append(genres_col)
              usecols.append(2)  # genres column
  
      item_df = pd.read_csv(
          item_datapath,
          sep=DATA_FORMAT[size].item_separator,
          engine="python",
          names=item_header,
          usecols=usecols,
          header=0 if DATA_FORMAT[size].item_has_header else None,
          encoding="ISO-8859-1",
      )
  
      # Convert 100k data's format: '0|0|1|...' to 'Action|Romance|..."
      if genres_header_100k is not None:
          item_df[genres_col] = item_df[
              genres_header_100k
          ].values.tolist()
          item_df[genres_col] = item_df[genres_col].map(
              lambda l: "|".join(
                  [GENRES[i] for i, v in enumerate(l) if v == 1]
              )
          )
  
          item_df.drop(genres_header_100k, axis=1, inplace=True)
  
      # Parse year from movie title. Note, MovieLens title format is "title (year)"
      # Note, there are very few records that are missing the year info.
      if year_col is not None:
  
          def parse_year(t):
              parsed = re.split("[()]", t)
              if len(parsed) > 2 and parsed[-2].isdecimal():
                  return parsed[-2]
              else:
                  return None
  
          item_df[year_col] = item_df["title_year"].map(parse_year)
          if title_col is None:
              item_df.drop("title_year", axis=1, inplace=True)
  
      if title_col is not None:
          item_df.rename(
              columns={"title_year": title_col}, inplace=True
          )
  
      return item_df
  
imports: import os
  import re
  import random
  import shutil
  import warnings
  import pandas
  from typing import Optional
  from zipfile import ZipFile
  from recommenders.datasets.download_utils import maybe_download, download_path
  from recommenders.utils.notebook_utils import is_databricks
  from recommenders.utils.constants import DEFAULT_HEADER, DEFAULT_ITEM_COL, DEFAULT_USER_COL, DEFAULT_RATING_COL, DEFAULT_TIMESTAMP_COL, DEFAULT_TITLE_COL, DEFAULT_GENRE_COL
  import pandera
  import pandera.extensions
  from pandera import Field
  from pandera.typing import Series
label_desc: Use image node_id 3 for calling a global function with example usage: _load_item_df(size, item_datapath, movie_col, title_col, genres_col, year_col) and returns: item_df, None, parsed, None