Булево индексирование с пониманием списка эффективно:
df = df[[len(i) <= 10 for i in df['reason']]]
Но есть несколько других подходов:
df = pd.concat([df]*2000)
%timeit df['reason'].map(len).le(10) # 2.32 ms per loop
%timeit df['reason'].str.len().le(10) # 2.6 ms per loop
%timeit [len(i) <= 10 for i in df['reason']] # 1.18 ms per loop