code: def cpd_multiplication(
      cpds: List[pd.DataFrame], normalize: bool = True
  ) -> pd.DataFrame:
      """
      Multiplies CPDs represented as pandas.DataFrame
      It does so by converting to PGMPY's TabularCPDs and calling a product function designed for these.
      It then convert the table back to pandas.DataFrame
  
      Important note: the result will be a CPD and the index will be the index of the first element on the list `cpds`
  
      Args:
          cpds: cpds to multiply
          normalize: wether to normalise the columns, so that each column sums to 1
  
      Returns:
          Pandas dataframe containing the resulting product, looking like a cpd
      """
      cpds_pgmpy = [pd_to_tabular_cpd(df) for df in cpds]
      product_pgmpy = factor_product(*cpds_pgmpy)  # type: TabularCPD
  
      if normalize:
          product_pgmpy.normalize()
  
      return tabular_cpd_to_pd(product_pgmpy)
  
imports: from typing import List
  import pandas
  from pgmpy.factors import factor_product
  from pgmpy.factors.discrete import TabularCPD
label_desc: Use image node_id 3 for calling a global function with example usage: cpd_multiplication(cpds, normalize) and returns: tabular_cpd_to_pd