You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas:按时间计算不同分组间的数值比率

解决方法

直接通过以下步骤即可实现需求:

  1. 提取每个时间步下type1的数值,构建时间到对应数值的映射关系
  2. 为每行匹配对应时间的type1数值,计算当前行数值与该值的比率

示例代码

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'time': ['t1', 't2', 't3', 't1', 't2', 't3'],
    'type': ['type1', 'type1', 'type1', 'type2', 'type2', 'type2'],
    'values': ['v1', 'v2', 'v3', 'v4', 'v5', 'v6']
})

# 提取type1的数值,以time为索引建立映射
type1_vals = df[df['type'] == 'type1'].set_index('time')['values']

# 生成比率列:按时间匹配type1数值,拼接成比率格式
df['ratio'] = df.apply(lambda row: f"{row['values']}/{type1_vals[row['time']]}", axis=1)

print(df)

输出结果

time    type values ratio
0   t1  type1     v1  v1/v1
1   t2  type1     v2  v2/v2
2   t3  type1     v3  v3/v3
3   t1  type2     v4  v4/v1
4   t2  type2     v5  v5/v2
5   t3  type2     v6  v6/v3

如果你的values是数值类型(而非字符串),只需将比率计算改为数值除法:

df['ratio'] = df['values'] / df['time'].map(type1_vals)

内容的提问来源于stack exchange,提问作者Flux Capacitor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:07:51