如何在pandas DataFrame中将各分组数值指标的起始基准值设为100
解决方案
核心逻辑是按车辆分组后,取每组的首个时间点数值为基准,将所有数值换算为基准值的百分比即可实现起始值对齐为100。
import pandas as pd # 构造示例原始数据 raw_data = {'Car':['A', 'B', 'A', 'B'], 'Hour':['1', '1', '2', '2'], 'Car-speed':[10, 20, 11, 19]} df = pd.DataFrame(raw_data) # 按车辆分组做标准化处理,确保每辆车的首个时间点数值为100 df['Car51-speed'] = df.groupby('Car')['Car-speed'].transform(lambda x: (x / x.iloc[0]) * 100) # 可选:删除原始速度列,得到最终结果 df = df.drop(columns='Car-speed')
运行后输出print(df)得到结果:
Car Hour Car51-speed 0 A 1 100.0 1 B 1 100.0 2 A 2 110.0 3 B 2 95.0
注意事项
- 运行前请确保你的数据已经按
Hour列升序排序,保证每个车辆分组的第一行是起始时间点的记录 - 该方案支持任意数量的车辆和时间戳,无需额外调整逻辑
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

