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

如何将按列分组后的DataFrame与同维度DataFrame执行除法运算?

问题:按分组与同维度DataFrame执行除法运算

现有如下Tester DataFrame:

Tester = pd.DataFrame({'Col1': ['A', 'A', 'B', 'B'],
                       'Col2': [1, 1, 2, 2],
                       'Col3': [1, 1, 2, 2],
                       'Col4': [1, 1, 2, 2],
                       'Col5': [1, 1, 2, 2]})

需求:按Col1列对该DataFrame分组后,将每个分组与同维度的Divider DataFrame执行除法运算,Divider数据如下:

Divider = pd.DataFrame({'Col2': [2, 2],
                       'Col3': [2, 2],
                       'Col4': [2, 2],
                       'Col5': [2, 2]})

尝试使用df = Tester.groupby('Col1').div(Divider)报错,期望得到如下输出DataFrame:

output = pd.DataFrame({'Col1': ['A', 'A', 'B', 'B'],
                       'Col2': [0.5, 0.5, 1, 1],
                       'Col3': [0.5, 0.5, 1, 1],
                       'Col4': [0.5, 0.5, 1, 1],
                       'Col5': [0.5, 0.5, 1, 1]})

注意:每个分组(如A、B)与Divider DataFrame维度相同(此例为2×4)


可行实现方法

原因分析

直接使用groupby.div()报错是因为该方法默认按索引对齐,而Divider的索引与分组后的子DataFrame索引不匹配,导致对齐失败。需要通过apply方法手动处理每个分组的运算。

实现代码

import pandas as pd

# 初始化原始数据
Tester = pd.DataFrame({'Col1': ['A', 'A', 'B', 'B'],
                       'Col2': [1, 1, 2, 2],
                       'Col3': [1, 1, 2, 2],
                       'Col4': [1, 1, 2, 2],
                       'Col5': [1, 1, 2, 2]})

Divider = pd.DataFrame({'Col2': [2, 2],
                       'Col3': [2, 2],
                       'Col4': [2, 2],
                       'Col5': [2, 2]})

# 分组执行除法运算
# group_keys=False 避免分组键被设为索引
result = Tester.groupby('Col1', group_keys=False).apply(
    lambda x: x[['Col2', 'Col3', 'Col4', 'Col5']] / Divider
)

# 合并Col1列与运算结果
final_output = pd.concat([Tester['Col1'], result], axis=1)

print(final_output)

代码说明

  1. groupby('Col1', group_keys=False):对Col1分组,同时禁止自动将分组键设置为结果的索引,保持原始结构。
  2. apply匿名函数:对每个分组的数值列(Col2-Col5)与Divider执行除法,由于两者维度完全一致,会直接按位置进行广播运算。
  3. pd.concat:将原始的Col1列与运算后的数值列合并,得到与期望输出一致的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:30:28