当前位置: 首页 > 知识库问答 >
问题:

将熊猫数据框中选定列中的浮动值缩放到0和1之间[重复]

齐甫
2023-03-14

我有以下数据帧df

       Name Date        Attr1   Attr2    Attr3 
0      Joe  26-12-2007  53.45  53.4500  52.7200 
1      Joe  27-12-2007  52.38  52.7399  51.0200 
2      Joe  28-12-2007  51.71  51.8500  50.7300 

我想将Attr1Attr2Attr3列中的浮点值缩放到0到1之间。列中的最高值将缩放为1。请注意,并非所有列都要缩放。

我正在使用Python 3.6。

下面的代码将缩放所有列,但我需要缩放选定的列。另一个问题是有些列是日期和字符串形式。下面的代码将遇到将值转换为浮点值的问题。

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler() 
scaled_values = scaler.fit_transform(df) 
df.loc[:,:] = scaled_values

共有1个答案

子车鸿运
2023-03-14

解决办法是:

在:

import pandas as pd

data = pd.DataFrame({'Name':['John','Sara','Martin'],'first':[53.45, 55.51, 51.22],'second':[51.45, 54.51, 57.22],'third':[50.45, 54.51, 58.22]})
data

输出:

    Name    first   second  third
0   John    53.45   51.45   50.45
1   Sara    55.51   54.51   54.51
2   Martin  51.22   57.22   58.22

在:

from sklearn.preprocessing import MinMaxScaler

sclr = MinMaxScaler()
new_df = sclr.fit_transform(data[['first', 'second', 'third']])

输出:

array([[ 0.51981352,  0.        ,  0.        ],
       [ 1.        ,  0.53032929,  0.52252252],
       [ 0.        ,  1.        ,  1.        ]])
 类似资料:
  • 问题内容: 我将数据存储在pandas数据框中,如下所示: 所以,我的数据看起来像这样 我想将其转换为另一个数据框。预期的输出可以在以下python脚本中显示: 因此,我的预期输出如下所示 实际上,我可以使用以下命令来找到所有组合并对其进行计数: 但是,事实证明,此类组合在单个列中。我想将组合中的每个值分隔到不同的列中,并且还要为计数结果增加一列。有可能这样做吗?请问您有什么建议吗?先感谢您。 问

  • 这是一个非常基本的问题,我似乎找不到答案。 我有一个这样的数据帧,叫做df: 然后我从df中提取所有行,其中列'B'的值为'B.2'。我将这些结果分配给df_2。 df_2变成: 然后,我将列B中的所有值复制到名为D的新列中。使df_2成为: 当我执行这样的任务时: 我得到以下警告: 试图在数据帧切片的副本上设置值。尝试使用。loc[row\u indexer,col\u indexer]=改为v

  • 我想使用两列作为行ID,同时计算基于时间的分组。请看下图: 转化成这样: 正在发生的是,X在时间10发生了0次,但在15和23发生了1次。 Y在10点钟发生了3次,但在15和23没有。等等。

  • 问题内容: 这可能很容易,但是我有以下数据: 在数据框1中: 在数据框2中: 我想要一个具有以下形式的数据框: 我尝试使用该方法,但是得到了交叉连接(即笛卡尔积)。 什么是正确的方法? 问题答案: 通常看来,您只是在寻找联接:

  • 问题内容: 我有一个OHLC价格数据集,该数据集已从CSV解析为Pandas数据框,并重新采样为15分钟的柱形: 我想添加各种计算的列,从简单的列开始,例如期间范围(HL),然后是布尔值以指示我将定义的价格模式的出现-例如锤形蜡烛模式,为其定义示例: 基本问题:如何将函数映射到列,特别是在我想引用多个其他列或整行或其他内容的地方? 这篇文章处理从单个源列添加两个计算列,这是很接近的,但还不完全是。

  • 问题内容: 我想在Pandas Dataframe中复制行。每行应重复n次,其中n是每行的一个字段。 这可能吗? 问题答案: 您可以用来获取重复的索引,然后使用它来索引框架: 之后,只需清理一下即可: 请注意,如果您可能有重复的索引值得担心,则可以改用: 使用位置,而不使用索引标签。