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

如何按指定时间范围对Pandas数据分组求电流均值?

我明白你的问题啦——你是把多段独立的时间序列拼在了同一个DataFrame里,现在要按指定的6个时间范围分别计算每一段的电流均值,而不是按单个时间点分组对吧?原来的代码直接按Time (Min)分组,相当于把所有时间点相同的行凑到一起,当然会出错。

下面给你两种可行的解决方法,都能得到你要的6行均值结果:

方法一:手动切片分组(直观易懂)

适合数据量不大、组数量少的场景,直接按索引定位每组数据,再计算均值:

import pandas as pd

Time = [0,1,2,3,4,0,1,2,3,4,0,1,2,3,0,1,2,3,4,5,6,0,-1,3,4,0,1,1,2,4]
Current = [0,2,3,4,5,1,2,3,4,6,0,1,1,2,-1,2,2,3,4,5,5,0,-1,3,4,0,1,1,2,4]
df = pd.DataFrame({'Time (Min)': Time,'Current (A)': Current})

# 定义每组的索引范围和对应的时间上限
groups_specs = [
    (0, 4, 4),   # 起始索引, 结束索引(不含), 时间上限
    (5, 9, 4),
    (10, 13, 3),
    (14, 21, 6),
    (21, 25, 3),
    (25, 30, 4)
]

# 遍历每组计算均值
results = []
for start_idx, end_idx, time_max in groups_specs:
    # 提取当前组的数据
    group_data = df.iloc[start_idx:end_idx]
    # 过滤出符合时间范围的行(虽然你的数据本身匹配范围,但加上更严谨)
    valid_data = group_data[group_data['Time (Min)'] <= time_max]
    # 计算均值并保存结果
    avg_current = valid_data['Current (A)'].mean()
    results.append({
        'Group': len(results)+1,
        'Time Range': f'0-{time_max}',
        'Average Current (A)': round(avg_current, 2)
    })

# 转成DataFrame查看最终结果
result_df = pd.DataFrame(results)
print(result_df)

方法二:自动添加组标签(灵活高效)

如果组数量多或数据量大,先给每行分配组ID,再按组分组处理:

import pandas as pd
import numpy as np

Time = [0,1,2,3,4,0,1,2,3,4,0,1,2,3,0,1,2,3,4,5,6,0,-1,3,4,0,1,1,2,4]
Current = [0,2,3,4,5,1,2,3,4,6,0,1,1,2,-1,2,2,3,4,5,5,0,-1,3,4,0,1,1,2,4]
df = pd.DataFrame({'Time (Min)': Time,'Current (A)': Current})

# 定义每组的长度和对应的时间上限
group_lengths = [5,5,4,7,4,5]
time_ranges = [4,4,3,6,3,4]

# 给每行添加组ID和对应的时间上限
df['Group ID'] = np.repeat(range(1, len(group_lengths)+1), group_lengths)
df['Time Max'] = np.repeat(time_ranges, group_lengths)

# 按组分组,计算符合时间范围的电流均值
result_df = df.groupby('Group ID').apply(
    lambda x: x[x['Time (Min)'] <= x['Time Max'].iloc[0]]['Current (A)'].mean()
).reset_index(name='Average Current (A)')
# 补充时间范围列
result_df['Time Range'] = [f'0-{tr}' for tr in time_ranges]

print(result_df)

两种方法最终都会输出6行结果,对应你指定的6个时间范围的电流均值。核心思路都是先区分开每一段独立的实验数据,再在每一段内计算均值,而不是跨段聚合相同时间点的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:22:49