Как вы, возможно, знаете, панды построены на вершине numpy. Когда вы делаете:
df[col].values[:] # This return a series
Вы получаете серию, это похоже на массив с нулевыми значениями.
Теперь, когда вы делаете
np.zeros(200)
Вы получаете массив 1-D, но ошибка, которую вы получаете, говорит о том, что ваши серии панд не имеют такой же длины, как и ваш массив numpy.
Чтобы делать то, что вы хотите, лучше сделать так:
df.iloc[:,:] = 0
В общем, старайтесь избегать зацикливания на массиве, в большинстве случаев есть встроенный метод, который сделает эту работу.