如何使用Pandas计算相同Prefix、FromMP行的TPCSpeed列平均值
你不需要自己写循环逐行处理,用Pandas自带的groupby+transform功能就能高效实现需求,核心逻辑是按指定字段分组后对TPCSpeed列求平均值,transform方法会自动把计算结果映射回原表的每一行,单元素分组的平均值就是原值,刚好匹配你的要求。
实现代码
import pandas as pd # 读取原始数据 result = pd.read_csv("result.csv") # 定义分组依据的四个字段 group_columns = ["Prefix", "Suffix", "FromMP", "ToMP"] # 定义需要计算平均值的TPCSpeed列 tpc_columns = [f"TPCSpeed{i}" for i in range(1, 8)] # 分组计算平均值,直接覆盖原TPCSpeed列的数值 result[tpc_columns] = result.groupby(group_columns)[tpc_columns].transform("mean") # 如果你需要对相同分组的行去重只保留一行,可以加上下面这句 # result = result.drop_duplicates(subset=group_columns, keep="first")
补充说明
如果TPCSpeed列存在空值,默认mean会自动忽略空值计算平均值,如果你需要空值参与计算(即组内有空值时结果也为空),可以把计算逻辑改成:
result[tpc_columns] = result.groupby(group_columns)[tpc_columns].transform("mean", skipna=False)
内容的提问来源于stack exchange,提问作者Muscular_Neanderthal
相关产品推荐
相关产品推荐

