Мне нужно создать столбец, который начинается с начального значения, а затем генерируется функцией, которая включает в себя прошлые значения этого столбца. НапримерPandas: создание столбца с актуальными значениями привязки
df = pd.DataFrame({'a': [1,1,5,2,7,8,16,16,16]})
df['b'] = 0
df.ix[0, 'b'] = 1
df
a b
0 1 1
1 1 0
2 5 0
3 2 0
4 7 0
5 8 0
6 16 0
7 16 0
8 16 0
Теперь я хочу, чтобы создать остальную часть столбца «Ъ», взяв минимум предыдущего ряда и добавив два. Одним из решений было бы
for i in range(1, len(df)):
df.ix[i, 'b'] = df.ix[i-1, :].min() + 2
Результирующее в желаемом выходе
a b
0 1 1
1 1 3
2 5 3
3 2 5
4 7 4
5 8 6
6 16 8
7 16 10
8 16 12
Есть ли у панды на «чистый» способ сделать это? Предпочтительно, чтобы векторизация вычислений?
Я не могу придумать способ, который не предполагает итерации. Но я скажу, что вам не нужно использовать '.ix []'; вы можете просто иметь 'df.b [i] = df.iloc [i-1] .min() + 2'. – chrisaycock