col = [a for item in col for a in item]
df = DataFrame({'ids': ids, 'colors': col})
df
df.groupby(['id', 'colors']).size().unstack().fillna(0)
Как преобразовать список словарей с зубчатыми массивами в DataFrame