code: def hash_pdf(df: pd.DataFrame) -> str:
      # can be 20% faster via to_parquet (see lmeyerov issue in pandas gh), but unclear if always available
      return (
          hashlib.sha256(
              putil.hash_pandas_object(df, index=True)
              .to_numpy()
              .tobytes()
          ).hexdigest()
          + hashlib.sha256(
              str(df.columns).encode("utf-8")
          ).hexdigest()  # noqa: W503
      )
  
imports: import hashlib
  import json
  import logging
  import os
  import pandas
  import pandas.util
  import platform
  import random
  import string
  import uuid
  import warnings
  from functools import lru_cache
  from typing import Any
  from collections import UserDict
  from .constants import VERBOSE, CACHE_COERCION_SIZE, TRACE
label_desc: Use image node_id 5 for calling a global function with example usage: hash_pdf(df) and returns: unknown