Проблема со значениями индекса, которые различаются между двумя объектами:
print (test.iloc[1:,0])
1 2
2 3
Name: col1, dtype: int64
print (test.iloc[:-1,0])
0 1
1 2
Name: col1, dtype: int64
Возможное решение - создать одинаковые значения индекса:
a = test.iloc[1:,0].reset_index(drop=True) - test.iloc[:-1,0])
print (a)
0 1
1 1
Name: col1, dtype: int64
Или, если длина всегда одна и та же, конвертировать значения в numpy массив:
a = test.iloc[1:,0] - test.iloc[:-1,0].values
print (a)
1 1
2 1
Name: col1, dtype: int64