Python处理Excel衍生列表:按行汇总功率并计算电流
解决方案
核心思路
把原始扁平列表转换成结构化DataFrame,通过动态分组汇总适配任意数量通道,补全缺失行号后计算电流。
代码实现步骤
1. 转换原始列表为结构化DataFrame
先拆分你的扁平列表,提取行号和对应通道功率,构建可分组的数据结构:
import pandas as pd # 示例原始列表(偶数索引=行号,奇数索引=对应通道功率) raw_list = [1, 12.5, 1, 18.3, 3, 9.7, 4, 5.2, 4, 11.1] # 拆分行号与功率数组 row_numbers = raw_list[::2] # 取偶数索引(从0开始)的元素作为行号 channel_powers = raw_list[1::2] # 取奇数索引的元素作为对应通道的功率 # 构建DataFrame df = pd.DataFrame({ '行号': row_numbers, '功率': channel_powers })
2. 按行号分组汇总功率
用groupby实现动态分组,自动汇总同一行的所有通道功率,不受通道数量限制:
# 按行号分组求和,保留行号为列(as_index=False) summary_df = df.groupby('行号', as_index=False)['功率'].sum()
3. 补全缺失的行号
生成完整行号序列,合并汇总数据后为缺失行填充功率0:
# 获取行号的范围边界 min_row = summary_df['行号'].min() max_row = summary_df['行号'].max() # 生成从最小到最大的完整行号序列 full_row_range = pd.DataFrame({'行号': range(min_row, max_row + 1)}) # 合并数据,缺失行的功率用0填充 full_summary = pd.merge(full_row_range, summary_df, on='行号', how='left').fillna(0)
4. 计算每行电流
替换为你实际的电流计算公式即可,示例用电流=功率/电压:
# 示例:假设电压为220V voltage = 220 full_summary['电流'] = full_summary['功率'] / voltage
进阶:直接从Excel读取处理(跳过手动生成列表)
如果能直接读取Excel的两个Sheet,可避免手动生成列表的误差,效率更高:
# 读取Excel文件 sheet1 = pd.read_excel('你的文件.xlsx', sheet_name='Sheet1') # 包含行号、通道号 sheet2 = pd.read_excel('你的文件.xlsx', sheet_name='Sheet2') # 包含通道号、功率匹配规则 # 关联通道与功率(假设Sheet1有"行号""通道号",Sheet2有"通道号""功率") merged_data = pd.merge(sheet1, sheet2, on='通道号', how='left').fillna(0) # 按行号汇总功率 summary_df = merged_data.groupby('行号', as_index=False)['功率'].sum() # 后续补全缺失行、计算电流的步骤和上面一致
内容的提问来源于stack exchange,提问作者iSpeedyG
相关产品推荐
相关产品推荐

