基于多列条件对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
相关产品推荐
相关产品推荐

