亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 SciKit Learn 中使用相同的預處理器縮放數據框中的多列

在 SciKit Learn 中使用相同的預處理器縮放數據框中的多列

一只斗牛犬 2022-07-05 17:00:39
在下面的數據框中,我想在每個符號中使用相同的最小值和最大值來縮放 Open、High、Low、Close。我可以用下面的代碼做到這一點,但是有沒有一種合理的方法可以用 SciKit Learn 預處理器來實現它?df = pd.DataFrame([[1, 'A', 10, 11, 9, 9, 100],                   [2, 'A', 9, 13, 9, 12, 150],                   [3, 'A', 12, 15, 11, 15, 130],                   [1, 'B', 90, 95, 90, 92, 10],                   [2, 'B', 92, 93, 84, 85, 13],                   [3, 'B', 85, 88, 81, 83, 11]],                  columns=['Timestamp', 'Symbol', 'Open', 'High', 'Low', 'Close', 'Volume'])df.set_index(['Timestamp', 'Symbol', 'Volume'], inplace=True)((df.stack() - df.stack().groupby('Symbol').min()) / (df.stack().groupby('Symbol').max() - df.stack().groupby('Symbol').min())).unstack().reset_index(['Volume'])
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

為了回答我自己的問題,下面的代碼似乎可以工作,但我不確定這是否真的是“正確”的方法:


df.set_index(['Timestamp', 'Symbol', 'Volume'], inplace=True)

df = df.stack().to_frame().groupby('Symbol').apply(SklearnWrapper(MinMaxScaler()))[0].unstack().reset_index()

我從Apply multiple StandardScaler's to individual groups 中獲得了 SklearnWrapper?


import typing

import pandas as pd


class SklearnWrapper:

    def __init__(self, transform: typing.Callable):

        self.transform = transform


    def __call__(self, df):

        transformed = self.transform.fit_transform(df.values)

        return pd.DataFrame(transformed, columns=df.columns, index=df.index)```


查看完整回答
反對 回復 2022-07-05
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號