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

如何按参与者分组执行np.log1p变换并除以组内最大值?

分组实现log1p变换与组内最大值归一化

实现步骤(基于Pandas)

  1. 导入依赖库
import pandas as pd
import numpy as np
  1. 加载数据集
    假设数据存储为CSV文件,直接读取:
df = pd.read_csv("your_dataset.csv")

如果数据已是DataFrame格式,直接跳过此步骤。

  1. 筛选数值列
    提取所有以time开头的列(即需要处理的数值列):
value_columns = [col for col in df.columns if col.startswith("time")]
  1. 分组处理与计算
    使用groupby结合apply完成分组内的log1p变换和归一化:
# 按participant分组,对每组数值列执行变换+归一化
processed_df = df.groupby("participant")[value_columns].apply(
    lambda group: np.log1p(group) / np.log1p(group).max()
).reset_index()

代码说明

  • np.log1p(group):对组内每个数值执行log(X+1)变换,避免小数值下的计算误差
  • np.log1p(group).max():计算当前组变换后的最大值
  • reset_index():恢复原始表格结构,保留participant与处理后数值的对应关系

高效替代实现(transform链式操作)

针对大型数据集,用transform可避免数据结构重组,提升处理效率:

# 第一步:对每组数值列做log1p变换
log_transformed = df.groupby("participant")[value_columns].transform(np.log1p)
# 第二步:计算每组变换后的最大值
group_max_values = log_transformed.groupby(df["participant"]).transform("max")
# 第三步:完成归一化
processed_df = pd.concat([df["participant"], log_transformed / group_max_values], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:55:27