docs: def _from_dataframe(dataframe, default_type='STRING'):
      """
        Infer a BigQuery table schema from a Pandas dataframe. Note that if you don't explicitly set
        the types of the columns in the dataframe, they may be of a type that forces coercion to
        STRING, so even though the fields in the dataframe themselves may be numeric, the type in the
        derived schema may not be. Hence it is prudent to make sure the Pandas dataframe is typed
        correctly.
  
      Args:
        dataframe: The DataFrame.
        default_type : The default big query type in case the type of the column does not exist in
            the schema. Defaults to 'STRING'.
      Returns:
        A list of dictionaries containing field 'name' and 'type' entries, suitable for use in a
            BigQuery Tables resource schema.
      """
  
      type_mapping = {
        'i': 'INTEGER',
        'b': 'BOOLEAN',
        'f': 'FLOAT',
        'O': 'STRING',
        'S': 'STRING',
        'U': 'STRING',
        'M': 'TIMESTAMP'
      }
  
      fields = []
      for column_name, dtype in dataframe.dtypes.iteritems():
        fields.append({'name': column_name,
                       'type': type_mapping.get(dtype.kind, default_type)})
  
      return fields