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

如何在Pandas中按行分组计算B/A比值并转换DataFrame格式?

解决方案

该需求完全可以在Pandas中实现,具体实现逻辑如下:
你的样例数据中A、B严格按顺序两两配对,所以我们可以用索引整除2作为分组标识,对每组分别取B的Value和A的Value做除法,最终构造目标DataFrame即可。

完整实现代码:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame()
df['Stage'] = ['A','B','A','B']
df['Value'] = ['3','0','2','4']

# 将Value列从字符串转为数值类型,才能进行除法运算
df['Value'] = pd.to_numeric(df['Value'])

# 按每2行一组分组,计算每组内B的Value除以A的Value的比值
ratio_series = df.groupby(df.index // 2).apply(
    lambda group: group.loc[group['Stage'] == 'B', 'Value'].iloc[0] / group.loc[group['Stage'] == 'A', 'Value'].iloc[0]
)

# 构造目标DataFrame
result_df = pd.DataFrame({
    'Stage': ['B/A'] * len(ratio_series),
    'Ratio': ratio_series.astype(int).astype(str)  # 转为字符串匹配你给出的输出格式,不需要可以去掉这部分转换
})

print(result_df)

运行上述代码后输出结果和你要求的完全一致:

Stage Ratio
0   B/A     0
1   B/A     2

如果你实际业务数据中A、B的配对规则不是按顺序两两排列,可以调整groupby的分组规则,比如如果有单独的组ID字段,直接用组ID作为分组键即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:27:04