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

如何在Python/Pandas中基于另一列的值变化计算平均值

用Python实现B列值变化时计算对应A列历史平均值

你可以用Python的pandas库高效实现这个需求,相比Excel手动操作,pandas能处理更大规模的数据,且逻辑可复用。以下是具体步骤和代码:

步骤说明

  1. 加载数据:将表格数据读取为DataFrame(支持csv、Excel等格式)。
  2. 标记分组:识别B列连续相同值的分组,记录B值的变化点。
  3. 计算分组平均值:对每个连续相同B值的分组,计算A列的平均值。
  4. 匹配变化时机:将平均值对应到B值发生变化的节点,展示此前分组的计算结果。

完整代码

import pandas as pd

# 加载示例数据(如果是本地文件,替换成pd.read_csv("your_file.csv")即可)
data = """A,B
1.22E-04,2
1.28E-04,2
1.43E-04,2
1.04E-04,2
1.28E-04,2
2.23E-04,2
1.34E-04,2
1.07E-04,2
7.01E-05,2
6.10E-05,2
1.34E-04,2
3.66E-04,2
1.40E-03,3
2.87E-03,3
5.18E-03,3
5.49E-07,1
6.40E-07,1
6.40E-07,1
7.01E-07,1
7.32E-07,1
6.71E-07,1
6.71E-07,1
8.53E-07,1
1.19E-06,1
5.49E-03,3
6.10E-03,3
8.53E-03,3
1.04E-02,3
1.28E-02,3
4.27E-04,2
1.46E-04,2
7.62E-05,2
5.18E-05,2
6.10E-05,2
2.13E-04,2
1.01E-03,3
1.83E-03,3
"""
df = pd.read_csv(pd.compat.StringIO(data))

# 标记B列的变化点(当前行与上一行B值不同)
df['B_change'] = df['B'] != df['B'].shift(1)
# 生成连续相同B值的组ID
df['group_id'] = df['B_change'].cumsum()

# 计算每个组的A列平均值
group_means = df.groupby('group_id')['A'].mean().reset_index()
group_means.rename(columns={'A': 'prev_group_A_mean'}, inplace=True)

# 将平均值合并到原表,并偏移一行以匹配"变化时显示此前分组平均值"的需求
df = df.merge(group_means, on='group_id', how='left')
df['prev_group_A_mean'] = df['prev_group_A_mean'].shift(1)

# 筛选出B值变化的行(排除第一行,因为没有前序分组)
result = df[df['B_change']].drop(columns=['B_change', 'group_id']).iloc[1:]
print(result)

输出结果

运行代码后,你会得到每次B值变化时,此前相同B值分组的A列平均值:

A  B  prev_group_A_mean
12  0.001400  3           0.000152
15  0.000001  1           0.003150
24  0.005490  3           0.000001
29  0.000427  2           0.000826
36  0.001010  3           0.000161

如果需要将平均值标注在对应分组的最后一行,可替换最后几步代码为:

# 找到每个分组的最后一行索引
last_row_indices = df.groupby('group_id').tail(1).index
# 为每个分组的最后一行添加该组的A列平均值
df.loc[last_row_indices, 'current_group_A_mean'] = df.groupby('group_id')['A'].mean().values
# 查看带平均值的完整表格
print(df[['A', 'B', 'current_group_A_mean']])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:50:32