Примечание. Я подумал, что вы задаете два вопроса, поэтому ответил на оба. Я собираюсь очистить этот ответ через минуту.
Если вам просто нужен список, содержащий элементы col1, для которых в той же строке есть 'Block' == 1;
df = pd.DataFrame({'Block': [1,1,1,2,2,3,3,3], 'col1':['A', 'B', '', 'C', 'G', 'H', 'I', '']})
ones_part = df['Block'] == 1
df[ones_part]['col1'].tolist()
Если вы хотите преобразовать записи col1, когда 'Block' == 1:
df = pd.DataFrame({'Block': [1,1,1,2,2,3,3,3], 'col1':['A', 'B', '', 'C', 'G', 'H', 'I', '']})
df['col1'].where(df['Block'] != 1, other=df['col1'].apply(list))
Кроме того, просто для ясности - есть несколько причин, чтобы не повторять фреймы данных. Во-первых, некоторые операции выполняются намного быстрее с использованием собственных методов pandas; они реализованы в C, а не в python. Другой - для ясности - он считается более читаемым.