code: def _get_column_dtype(llwcol):
      
      try:  # maybe its a numpy array already!
          dtype = llwcol.dtype
          if dtype is numpy.dtype('O'):  # don't convert
              raise AttributeError
          return dtype
      except AttributeError:  # dang
          try:  # ligo.lw.table.Column
              llwtype = llwcol.parentNode.validcolumns[llwcol.Name]
          except AttributeError:  # not a column
              try:
                  return type(llwcol[0])
              except IndexError:
                  return None
          else:  # map column type str to python type
              from ligo.lw.types import (ToPyType, ToNumPyType)
              try:
                  return ToNumPyType[llwtype]
              except KeyError:
                  return ToPyType[llwtype]
docs: Get the data type of a LIGO_LW `Column`
  
      Parameters
      ----------
      llwcol : :class:`~ligo.lw.table.Column`, `numpy.ndarray`, iterable
          a LIGO_LW column, a numpy array, or an iterable
  
      Returns
      -------
      dtype : `type`, None
          the object data type for values in the given column, `None` is
          returned if ``llwcol`` is a `numpy.ndarray` with `numpy.object_`
          dtype, or no data type can be parsed (e.g. empty list)