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

如何按字典分组规则对多列设备数据进行求和聚合?

没问题,我来帮你搞定这个需求!用Python的Pandas库就能轻松实现,下面是具体的代码示例和详细解释:

完整实现代码

import pandas as pd

# 构造输入数据集(如果是从文件读取,替换成pd.read_csv/Excel即可)
data = {
    'device_id': [28,54,97,14,21,23,22,29,25,27],
    'class': ['S','P','S','V','P','V','P','P','S','P'],
    'Channel A': [2,0,0,0,0,0,0,0,0,0],
    'Channel B': [4,0,0,0,0,0,0,0,0,0],
    'Channel C': [23,0,0,0,0,0,32,0,0,0],
    'Channel D': [45,0,0,0,0,0,76,0,0,0],
    'Channel E': [6,0,0,0,0,0,89,0,0,0],
    'Channel F': [6,0,0,0,0,0,0,0,0,0],
    'Channel G': [8,0,0,0,0,0,0,0,0,0],
    'Channel H': [9,0,0,0,0,0,0,0,0,0],
    'Channel I': [0,0,0,0,0,0,0,0,0,0],
    'Channel J': [0,0,0,0,0,0,0,0,0,0]
}
df = pd.DataFrame(data)

# 定义分组规则字典(修正了原字典中" Channel J"的空格问题,避免列名匹配失败)
group_dict = {
    'S': ['Channel A','Channel B'],
    'P': ['Channel C','Channel D','Channel E'],
    'V': ['Channel F','Channel G','Channel H','Channel I','Channel J']
}

# 按分组规则计算每行的求和结果
for group_name, channels in group_dict.items():
    df[group_name] = df[channels].sum(axis=1)

# 提取需要的列,生成最终输出格式
output_df = df[['device_id', 'S', 'P', 'V']]
print(output_df)

代码解释

  1. 数据导入/构造:这里我把你给出的输入数据直接构造成了字典,转换成Pandas的DataFrame。如果你的数据是存储在CSV/Excel文件里,只需要把这部分换成pd.read_csv("你的文件路径")或者pd.read_excel("你的文件路径")即可。
  2. 分组规则处理:我修正了原分组字典中V分组里的" Channel J"(前面多了一个空格),确保列名能准确匹配,避免求和出错。
  3. 分组求和:遍历分组字典,对每个分组对应的通道列执行按行求和(axis=1表示横向求和),并将结果存储为新的列(S、P、V)。
  4. 输出格式整理:最后筛选出device_id和三个分组的求和列,得到和你期望完全一致的输出结果。

运行结果

执行代码后,你会得到如下输出:

device_id  S    P   V
0         28  6   74  23
1         54  0    0   0
2         97  0    0   0
3         14  0    0   0
4         21  0    0   0
5         23  0    0   0
6         22  0  197   0
7         29  0    0   0
8         25  0    0   0
9         27  0    0   0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:48:02