使用pandas的范围误差索引

2024-09-29 07:19:09 发布

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

首先,由两个文件组成的MWE。其目的是将CSV读入pandas数据帧,然后将每列中的所有值重新缩放到范围(-1,1)。在

在数据.csv公司名称:

Var1,Var2,Var3
2.1,6.4,5.2
7.9,2.1,1.3
5.0,6.1,6.7

在mwe.py公司公司名称:

^{pr2}$

当我执行这个(Python 2.7.13、sklearn 0.18.1和pandas 0.20.3)时,我收到一条奇怪的错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "mwe.py", line 8, in <module>
    data[indices_of_feature_columns] = scaler.fit_transform(data[indices_of_feature_columns])
  File "/home/gavin/miniconda2/lib/python2.7/site-packages/pandas/core/frame.py", line 1958, in __getitem__
    return self._getitem_array(key)
  File "/home/gavin/miniconda2/lib/python2.7/site-packages/pandas/core/frame.py", line 2002, in _getitem_array
    indexer = self.loc._convert_to_indexer(key, axis=1)
  File "/home/gavin/miniconda2/lib/python2.7/site-packages/pandas/core/indexing.py", line 1231, in _convert_to_indexer
    raise KeyError('%s not in index' % objarr[mask])
KeyError: '[0 1 2] not in index'

但是,当一个朋友使用看起来完全相同的设置执行此代码时,代码将正确运行。在


Tags: inpycorepandashomelibpackagesline
1条回答
网友
1楼 · 发布于 2024-09-29 07:19:09

试试这个:

import pandas as pd
import sklearn.preprocessing

data = pd.read_csv("data.csv")
scaler = sklearn.preprocessing.MinMaxScaler(feature_range = (-1, 1))

data = scaler.fit_transform(data)

结果:

^{pr2}$

更新:如果要将缩放的data保留为数据帧:

In [18]: data = pd.DataFrame(scaler.fit_transform(data), 
                             index=data.index, 
                             columns=data.columns)

In [19]: data
Out[19]:
   Var1      Var2      Var3
0  -1.0  1.000000  0.444444
1   1.0 -1.000000 -1.000000
2   0.0  0.860465  1.000000

相关问题 更多 >