Нормализуйте столбец данных pandas по максимальному значению, наблюдаемому на сегодняшний день - PullRequest
1 голос
/ 05 марта 2020

У меня есть pandas кадр данных с индексом времени, и я хочу нормализовать каждую строку столбца по максимальному значению, наблюдаемому к этой дате и времени.

# an example input df
rng = pd.date_range('2020-01-01', periods=8)
a_lst = [2, 4, 3, 8, 2, 4, 10, 2]
df = pd.DataFrame({'date': rng, 'A': a_lst})
df.set_index('date', inplace=True, drop=True)

enter image description here

(возможное решение состоит в том, чтобы перебрать строки, задать подмножество прошлых строк, а затем разделить на максимум [1 , 2 , 3 ] , но это было бы неэффективно)

1 Ответ

2 голосов
/ 05 марта 2020

вы смотрите cummax:

df['A_normalized'] = df['A']/df['A'].cummax()

Вывод:

             A  A_normalized
date                        
2020-01-01   2          1.00
2020-01-02   4          1.00
2020-01-03   3          0.75
2020-01-04   8          1.00
2020-01-05   2          0.25
2020-01-06   4          0.50
2020-01-07  10          1.00
2020-01-08   2          0.20
...