通过迄今为止观察到的最大值对 pandas 数据框列进行归一化
Normalize pandas dataframe column by the max observed to date
我有一个带有时间索引的 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)
(一种可能的解决方案是遍历行,对过去的行进行子集化,然后除以最大值 [1,2,,但效率很低)
您正在查看 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
我有一个带有时间索引的 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)
(一种可能的解决方案是遍历行,对过去的行进行子集化,然后除以最大值 [1,2,
您正在查看 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