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

用于缩放数据帧中列的lambda函数返回:“'float'对象没有属性'min'”

诸葛令
2023-03-14

我刚刚开始学习Python和机器学习,遇到了一个我自己或任何其他在线资源都无法解决的问题。我正在尝试使用lambda函数按以下方式缩放pandas数据帧中的列:

X['col1'] = X['col1'].apply(lambda x: (x - x.min()) / (x.max() - x.min()))

并获得以下错误消息:

对象没有属性min

我尝试将数据类型转换为整数,返回以下错误:

“int”对象没有属性“min”

我相信我犯了一些基本的错误,希望任何人都能给我指出正确的方向。

共有1个答案

乌靖
2023-03-14

我认为在这里应用是没有必要的,因为存在更快的矢量化解决方案-将x更改为x['col1']

X = pd.DataFrame({'col1': [100,10,1,20,10,-20,200]})
X['col2'] = (X['col1'] - X['col1'].min()) / (X['col1'].max() - X['col1'].min())
print (X)

   col1      col2
0   100  0.545455
1    10  0.136364
2     1  0.095455
3    20  0.181818
4    10  0.136364
5   -20  0.000000
6   200  1.000000

与注释中的@meW一样,另一种解决方案是使用MinMaxScaler

from sklearn import preprocessing

min_max_scaler = preprocessing.MinMaxScaler()
X['col2'] = min_max_scaler.fit_transform(X[['col1']])
print (X)

   col1      col2
0   100  0.545455
1    10  0.136364
2     1  0.095455
3    20  0.181818
4    10  0.136364
5   -20  0.000000
6   200  1.000000
 类似资料:
  • 这是我上一篇关于使用负值的特定条件规范化数据帧列的文章的继续。 我使用的DataFrame如下: 和Series的可能值是和所有正整数(包括)。我的目标是通过以下方式规范化两个列: 如果该值等于,则返回缺少的值 否则,对和之间范围内的剩余正整数进行规格化 我对埃兹雷尔的解决方案非常满意。话虽如此,我继续研究我的问题,看看是否能想出一个替代的解决方案。以下是我的尝试: 我正在定义以下函数: 不幸的是

  • 我正在学习指针是如何工作的,但我不明白这段代码中的一件事。在void*函数中返回int就像一个咒语,但是返回float就不是了。

  • 我有一个包含3列a、b和c的数据框,还有一个接受3个参数的函数,例如一个小示例: 对于每一行,我希望应用函数并在新的数据帧中返回值a、b、c、x、y、z 我做到了: 它正在返回: 如何获得如下结果,而不是每一行的数组:

  • 我从这个URL刮取了这个表: "https://www.patriotsoftware.com/blog/accounting/average-cost-living-by-state/" 看起来像这样: 然后我编写了这个函数来帮助我将字符串转换成整数: 当我只将函数应用于一列时,它就会工作。我在这里找到了关于在多个列上使用的答案:如何将函数应用于多个列 但我下面的代码不起作用,也不会产生错误:

  • 我有两个数据帧,是位置的位置,是站点的位置。我正试图找到一种更有效的方法来应用距离函数来查找在特定范围内的站点并返回站点名称。如果距离函数是纬度差,这是我的预期结果: 我有一个解决方案,使用笛卡尔产品/交叉连接在单个数据帧上应用一个函数。这个解决方案是可行的,但是我在一个真正的数据集中有数百万行,这使得笛卡尔产品非常慢。 我还尝试了使用的循环方法,但这比交叉连接方法慢。是否有一种更为通灵/高效的方

  • 我正在使用下面的代码使用GRU预测下一个单词。 低于异常。请帮我解决这个问题?? AttributeError Traceback(最近一次调用),在- c:\ users \ dixit \ appdata \ local \ programs \ python \ python 38 \ lib \ site-packages \ keras \ engine \ training . py