code: def geohash_encode(
      df: DataFrame,
      geohash: str,
      longitude: str,
      latitude: str,
  ) -> DataFrame:
      """
      Encode longitude and latitude into geohash
  
      :param df: DataFrame containing longitude and latitude data
      :param geohash: Name of new column to be created containing geohash location.
      :param longitude: Name of source column containing longitude.
      :param latitude: Name of source column containing latitude.
      :return: DataFrame with decoded longitudes and latitudes
      """
      try:
          encode_df = df[[latitude, longitude]]
          encode_df.columns = ["latitude", "longitude"]
          encode_df["geohash"] = encode_df.apply(
              lambda row: geohash_lib.encode(
                  row["latitude"], row["longitude"]
              ),
              axis=1,
          )
          return _append_columns(df, encode_df, {"geohash": geohash})
      except ValueError as ex:
          raise InvalidPostProcessingError(
              _("Invalid longitude/latitude")
          ) from ex
  
file_path: superset/superset/utils/pandas_postprocessing/geography.py
imports: from typing import Optional
  import geohash
  from flask_babel import gettext
  from geopy.point import Point
  from pandas import DataFrame
  from superset.exceptions import InvalidPostProcessingError
  from superset.utils.pandas_postprocessing.utils import _append_columns
label_desc: Use image node_id 2 for calling a global function with example usage: geohash_encode(df, geohash, longitude, latitude) and returns: _append_columns