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

基于多列条件对Pandas DataFrame的SEC列分组求和

Pandas 按条件分组透视求和实现指定格式输出

需求说明

处理包含SEC、DeviceName、DAY、SPRAY列的DataFrame:

  • 仅保留SPRAY=1的记录
  • 按DeviceName分组,对每个DAY对应的SEC值求和
  • 输出以DeviceName为索引,列名为Day X(X为DAY数值)的表格,无数据的DAY填充0

示例输入构造

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'DeviceName': ['Applied_AA-6', 'Applied_AA-6', 'Applied_AA-6', 'Applied_AA-15', 'Applied_AA-15', 'Applied_AA-15'],
    'SEC': [1800, 600, 1373, 10, 1800, 13],
    'DAY': [4, 4, 5, 4, 5, 5],
    'SPRAY': [1, 0, 1, 0, 1, 1]
})

实现代码

# 筛选SPRAY等于1的数据
filtered_df = df[df['SPRAY'] == 1]

# 使用透视表完成分组求和与格式转换
result = filtered_df.pivot_table(
    index='DeviceName',
    columns='DAY',
    values='SEC',
    aggfunc='sum',
    fill_value=0
).rename(columns=lambda day_num: f'Day {day_num}')

# 打印结果
print(result)

输出结果

Day 4  Day 5
DeviceName                  
Applied_AA-6     1800   1373
Applied_AA-15       0   1813

关键说明

  • 数据筛选:df[df['SPRAY'] == 1] 快速过滤出符合条件的记录
  • 透视表操作:pivot_table 一步完成分组、求和、转宽表,fill_value=0 自动填充无数据的DAY值为0
  • 列名调整:rename(columns=lambda day_num: f'Day {day_num}') 将原始数字列名转为需求的Day X格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:35:14