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

Pandas:基于多层列分组聚合生成含Freq新序列的方法问询

解决方法

直接针对你的多层列DataFrame,或者从原始数据一步到位,都可以实现需求:

方法一:基于已生成的pivot_table结果处理

假设你已生成的多层列DataFrame名为pivot_df:

  1. 按Band和Channel分组求和slot功率
    利用列的多层索引,指定按前两层(Band、Channel)分组,对每个TimeStamp下的对应值求和:

    sum_df = pivot_df.groupby(level=[0, 1], axis=1).sum()
    

    这里level=[0,1]对应列多层索引的Band(第0层)和Channel(第1层),axis=1表示按列维度分组聚合。

  2. 计算Freq并替换列名
    遍历列的(Band, Channel)元组,计算对应的freq值,替换为新列名:

    sum_df.columns = [1200 + (band - 1) + channel / 12 for band, channel in sum_df.columns]
    

方法二:从原始DataFrame直接生成结果(更高效)

跳过中间的pivot_table步骤,直接对原始数据分组求和再转换格式:

# 假设原始DataFrame名为raw_df
result = raw_df.groupby(['TimeStamp', 'Band', 'Channel'])['watts'].sum().unstack()
# 替换列名为计算后的Freq
result.columns = result.columns.map(lambda x: 1200 + (x[0]-1) + x[1]/12)

为什么之前单层级groupby失败?

因为你的列是多层索引结构,单层级分组仅针对Band或Channel其中一层,没有同时将两者作为分组依据,自然无法得到同一Band+Channel下的slot总和。必须指定同时按Band和Channel两层列索引分组,才能得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:28:12