@classmethod
def from_records(cls, records, index_col, columns=None, drop_index_col=True,
    chrom_lengths=None, **kwargs):
    """Creates a GenomicDataFrame from a structured or record ndarray."""
    if not 2 <= len(index_col) <= 3:
        raise ValueError(
            'index_col should contain 2 entries (for positioned data or 3 entries (for ranged data)'
            )
    df = super().from_records(records, columns=columns, **kwargs)
    df[index_col[0]] = df[index_col[0]].astype(str)
    df = df.set_index(index_col, drop=drop_index_col)
    return cls.from_df(df, chrom_lengths=chrom_lengths)
