Я думаю, что невозможно получить положение элемента изнутри applymap
.
Однако вы можете использовать shift
для получения предыдущих строк / столбцов, подобных этому:
import pandas as pd, numpy as np
df = pd.DataFrame(np.array(range(25)).reshape(5,5) , columns = list('abcde'))
print(df)
# a b c d e
#0 0 1 2 3 4
#1 5 6 7 8 9
#2 10 11 12 13 14
#3 15 16 17 18 19
#4 20 21 22 23 24
stack = np.dstack((df.shift().shift(axis=1), df.shift(axis=1), df.shift()))
pd.DataFrame([list(x) for x in stack], columns=df.columns.values)
Результат:
a b c d e
0 [nan, nan, nan] [nan, 0.0, nan] [nan, 1.0, nan] [nan, 2.0, nan] [nan, 3.0, nan]
1 [nan, nan, 0.0] [0.0, 5.0, 1.0] [1.0, 6.0, 2.0] [2.0, 7.0, 3.0] [3.0, 8.0, 4.0]
2 [nan, nan, 5.0] [5.0, 10.0, 6.0] [6.0, 11.0, 7.0] [7.0, 12.0, 8.0] [8.0, 13.0, 9.0]
3 [nan, nan, 10.0] [10.0, 15.0, 11.0] [11.0, 16.0, 12.0] [12.0, 17.0, 13.0] [13.0, 18.0, 14.0]
4 [nan, nan, 15.0] [15.0, 20.0, 16.0] [16.0, 21.0, 17.0] [17.0, 22.0, 18.0] [18.0, 23.0, 19.0]