运行时报错

来源:5-13 HR表的特征预处理-1

声声慢_1

2018-09-18

def hr_preprocessing(sl=False,le=False,npr=False):
    df=pd.read_csv("E:/workplace/data/HR.csv")
    #1.得到标注
    label=df["left"]
    df=df.drop("left",axis=1)
    #2.清洗数据
    #去掉空值和异常值
    df=df.dropna(subset=["satisfaction_level","last_evaluation"])
    df=df[df["satisfaction_level"]<=1][df["salary"]!="nme"]
    #3.特征选择
    #4.特征处理
    scaler_lst=[sl,le,npr]
    column_lst=["satisfaction_level","last_evaluation","number_project"]
    for i in range(len(scaler_lst)):
        if not scaler_lst[i]:
            df[column_lst]=\
                MinMaxScaler().fit_transform(df[column_lst[i]].values.reshape(-1,1)).reshape(1,-1)[0]
        else:
            df[column_lst]=\
                StandardScaler().fit_transform(df[column_lst[i]].values.reshape(-1,1)).reshape(1,-1)[0]
    return df
def main():
    print(hr_preprocessing(sl=True,le=True,npr=True))
if __name__=="__main__":
    main()

运行时报错

Traceback (most recent call last):

  File "<ipython-input-19-817e55114f04>", line 1, in <module>
    runfile('E:/workplace/code/main.py', wdir='E:/workplace/code')

  File "D:\Program Files (x86)\anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
    execfile(filename, namespace)

  File "D:\Program Files (x86)\anaconda\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "E:/workplace/code/main.py", line 46, in <module>
    main()

  File "E:/workplace/code/main.py", line 44, in main
    print(hr_preprocessing(sl=True,le=True,npr=True))

  File "E:/workplace/code/main.py", line 41, in hr_preprocessing
    StandardScaler().fit_transform(df[column_lst[i]].values.reshape(-1,1)).reshape(1,-1)[0]

  File "D:\Program Files (x86)\anaconda\lib\site-packages\pandas\core\frame.py", line 2352, in __setitem__
    self._setitem_array(key, value)

  File "D:\Program Files (x86)\anaconda\lib\site-packages\pandas\core\frame.py", line 2382, in _setitem_array
    self.ix._setitem_with_indexer((slice(None), indexer), value)

  File "D:\Program Files (x86)\anaconda\lib\site-packages\pandas\core\indexing.py", line 527, in _setitem_with_indexer
    raise ValueError('Must have equal len keys and value '

ValueError: Must have equal len keys and value when setting with an iterable

请问下是哪里出了问题?谢谢

写回答

1回答

途索

2018-09-20

同学你好,应该是数据数量和label数量不一致造成的,可以把drop label放在dropna以后进行,试一把。

0
1
声声慢_1
非常感谢!
2018-09-20
共1条回复

Python3数据分析与挖掘建模实战,快速胜任数据分析师

快速胜任数据分析岗位,逆袭成为数据掘金时代的抢手人才!

2204 学习 · 489 问题

查看课程