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

Pandas DataFrame按A、B列分组计算C列不同取值对应的D列比值

实现步骤

你可以按照如下操作完成计算:

  • 首先确认你的DataFrame已经将A、B、C设为多级索引,若还未设置可先执行:
import pandas as pd
# 若A、B、C是普通列,先转为多级索引
df = df.set_index(['A', 'B', 'C'])
  • 把C索引的取值转为列,方便提取C=0和C=1对应的D值:
# 提取D列,将C级索引展开为列
df_unstack = df['D'].unstack(level='C')
  • 计算新列:
    • 如果你需要的是数值计算结果(也就是除法后的商):
    df_unstack['NEW'] = df_unstack[1] / df_unstack[0]
    
    • 如果你需要的是示例里的字符串拼接格式(比如4/32):
    df_unstack['NEW'] = df_unstack[1].astype(str) + '/' + df_unstack[0].astype(str)
    
  • 最终筛选保留NEW列,即可得到你需要的结构:
result = df_unstack[['NEW']]
验证示例

你可以用下面的测试数据验证效果:

# 构造测试数据
data = {
    'A': [1,1,1,1,1,1,2,2],
    'B': [1,1,2,2,3,3,1,1],
    'C': [0,1,0,1,0,1,0,1],
    'D': [32,4,43,12,58,34,37,5]
}
df = pd.DataFrame(data).set_index(['A','B','C'])

# 执行上述计算逻辑后输出result,结构和需求完全一致

内容的提问来源于stack exchange,提问作者L. W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:09:03