Вы можете сделать простой цикл for для итерации по самому длинному столбцу и создать список кортежей, содержащих каждый элемент x из него, назначенный элементу [ index_of_x% length_shortest_column ].
Например:
df = []
for i,x in enumerate(column_b):
df.append( (x, column_a[i % len(a)]) )
Это должно дать вам следующее (при условии, что column_b содержит символы):
df = [('a', 0), ('b', 1), ('c', 2), ('d', 3),
('e', 0), ('f', 1), ('g', 2), ('h', 3),
('i', 0), ('j', 1)]
Возможно, вы захотите использовать другую структуру данных для df, но общая идея такова:все еще такой же. Единственный важный момент заключается в том, что вы должны перебирать самый длинный список. Может быть, есть более хороший способ сделать это, но это должно помочь вам, если на крайнем случае.