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

如何在data frame中按TEMPERATURE分组求均值替换DRUG=C的READING值

实现方案(Python Pandas 版本)

以下代码可直接运行得到你需要的两种输出结果:


步骤1:导入依赖并构造示例数据

import pandas as pd

# 构造和你示例一致的原始DataFrame
data = {
    'DRUG': ['A','A','A','A','B','B','B','B','C','C','C','C','C','C','C','D'],
    'READING1': [1,1,2,2,8,8,8,9,12,11,12,12,11,11,11,20],
    'READING2': [2,2,2,3,9,8,9,8,11,11,11,11,12,12,12,21],
    'READING3': [3,3,1,3,7,8,9,7,12,11,11,11,12,11,12,21],
    'TEMPERATURE': [12,12,14,16,12,14,14,16,12,12,14,14,14,16,16,12]
}
df = pd.DataFrame(data)

步骤2:计算DRUG=C的分组均值

# 筛选DRUG为C的行,按TEMPERATURE分组计算三个读数字段的均值,保留1位小数匹配你的示例
c_group_mean = df[df['DRUG'] == 'C'].groupby('TEMPERATURE')[['READING1', 'READING2', 'READING3']].mean().round(1)

如果需要输出整数结果,将.round(1)改为.round(0)或者追加.astype(int)即可。


步骤3:生成第一种输出(保留所有原始行,C的原值替换为对应均值)

df_output1 = df.copy()
# 将均值映射替换到原表中DRUG=C的对应行
for temp in c_group_mean.index:
    mask = (df_output1['DRUG'] == 'C') & (df_output1['TEMPERATURE'] == temp)
    df_output1.loc[mask, ['READING1', 'READING2', 'READING3']] = c_group_mean.loc[temp].values

print(df_output1)

步骤4:生成第二种输出(C按温度聚合去重,其余行保留原始值)

# 保留所有非C的原始行
non_c_df = df[df['DRUG'] != 'C']
# 给C的聚合均值表补充DRUG字段,调整列顺序后和非C表拼接
c_agg_df = c_group_mean.reset_index()
c_agg_df['DRUG'] = 'C'
c_agg_df = c_agg_df[['DRUG', 'READING1', 'READING2', 'READING3', 'TEMPERATURE']]
df_output2 = pd.concat([non_c_df, c_agg_df], ignore_index=True)

print(df_output2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:15:04