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

如何基于已处理DataFrame实现新DataFrame的类sklearn fit_transform转换

实现类似fit_transform的分组转换方案

完全可行,核心思路是先从df1中拟合出分组规则和基准统计值,再将这些规则复用在df2上,具体步骤如下:

1. 从df1中拟合转换规则

先统一分组区间,计算并保存每个分组的RnkMeanGroup基准值(对应sklearn的fit阶段):

import pandas as pd
import numpy as np

# 初始化并处理df1
df1 = pd.DataFrame(np.random.randint(0, 101, (100, 2)), columns=['M', 'A'])
max_min = 100
step = 5
# 统一分组区间(覆盖0-100所有数值)
bins = range(0, max_min + step, step)
df1['M_bin'] = pd.cut(df1['M'], bins=bins)

# 计算组内A列降序排名并取整
df1['RnkGroup'] = df1.groupby('M_bin')['A'].transform('rank', ascending=False).round()

# 提取每个分组的RnkMeanGroup基准值,保存为映射字典
rank_mean_mapping = df1.groupby('M_bin')['RnkGroup'].mean().round().to_dict()

2. 将规则应用到df2(对应sklearn的transform阶段)

用相同的分组逻辑处理df2,复用排名规则和从df1学到的基准值:

# 初始化df2
df2 = pd.DataFrame(np.random.randint(0, 101, (100, 2)), columns=['M', 'A'])

# 1. 按相同区间对df2分组
df2['M_bin'] = pd.cut(df2['M'], bins=bins)

# 2. 执行相同的组内降序排名取整操作
df2['RnkGroup'] = df2.groupby('M_bin')['A'].transform('rank', ascending=False).round()

# 3. 映射df1中拟合的分组均值
df2['RnkMeanGroup'] = df2['M_bin'].map(rank_mean_mapping)

关键说明

  • 分组区间是固定规则,直接复用即可覆盖所有0-100的数值;
  • RnkGroup的计算是通用的组内排名逻辑,对df2独立执行;
  • RnkMeanGroup是从df1中学习到的分组基准值,确保df2使用和df1完全一致的均值规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:10:27