df.D = df.D+np.where(df.D<0, 10, 0)
Или:
df.D = df.D.add(df.D.lt(0)*10)
A B C D
0 -10 -1 -6 3
1 -2 4 2 4
2 3 -8 0 5
3 3 2 -2 1
4 4 3 3 1
5 9 4 0 7
6 -8 -6 5 9
7 0 7 7 7
8 -9 3 -1 6
9 4 -4 0 7
10 4 -2 7 9
11 -4 -8 -1 9
Время:
Кажется, np.where - самый быстрый подход.
%%timeit
df.D.add(df.D.lt(0)*10)
331 µs ± 3.43 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
df.D+np.where(df.D<0, 10, 0)
260 µs ± 5.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
df.loc[df['D']<0, 'D'] = df['D']+10
804 µs ± 15.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)