Мы можем сделать subtract.outer
из numpy
, затем получить меньшую тройку и найти значение меньше 0, и суммировать значение для каждой строки
a = np.sum(np.tril(np.subtract.outer(df.Value.values,df.Value.values), k=0)<0, axis=1)
# results in array([0, 0, 2, 0, 4, 3, 6])
df['Count'] = a