对Pandas应用scikitlearn预处理而不引起警告

2024-06-25 06:57:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用scikitlearn的预处理来最小化-最大化熊猫上的一行。我的解决方案有效,但给了我两个警告,我想知道是否有更好的方法来做

下面是我的函数,它在给定数据帧和列的情况下执行minmaxscaling

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
def minMaxScale(df, cols):
    scaler = MinMaxScaler()
    return scaler.fit_transform(df[cols])

这就是我使用它的地方

df.loc[:,'pct_mm'] = minMaxScale(df,['pct'])

其中“pct”列存在,而“pct_mm”列不存在。 我收到以下警告2次:

试图在数据帧切片的副本上设置值。 尝试改用.loc[row\u indexer,col\u indexer]=value

我应该如何按照熊猫想要的方式来做


Tags: 数据fromimport警告dfsklearnlocmm
1条回答
网友
1楼 · 发布于 2024-06-25 06:57:54

无法复制警告:

import pandas as pd
import seaborn as sns
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler

def minMaxScale(df, cols):
    scaler = MinMaxScaler()
    return scaler.fit_transform(df[cols])

df = sns.load_dataset('iris')
df.loc[:, 'newcolumn'] = minMaxScale(df, ['sepal_length'])

但是,如果我这样做:

df = sns.load_dataset('iris')
df2 = df[:]
df2.loc[:, 'newcolumn'] = minMaxScale(df, ['sepal_length'])

然后我也得到了两个警告

可能是从代码中的某个地方的另一个数据帧派生出df。我建议您查找使用df的行,并确保制作副本,如:df = old_df.copy()

相关问题 更多 >