我有一个数据帧(training_df),具有4列,每列包含约150行。我也有如下功能:

def normalise(theMin, theMax, theVal):
    if(theMin == theVal):
        return 0
    else if(theMax == theVal):
        return 1
    return (theVal - theMin) / (theMax - theMin)


现在,我要做的是依次遍历数据帧的所有四列,并遍历每一列中的所有行以及行中的每个值(当然,每一行中只有一个单元格)用normalise函数返回的任何值替换它们。因此,我通过查看此论坛中已经问过的问题来尝试了类似的操作:

for column in training_df:
    theMin = training_df[column].min()
    theMax = training_df[column].max()
    for i in training_df[[column]].iterrows():
        training_df[[column[i]]] = normalise(theMin, theMax, i)


但是我得到了一个TypeError: string indices must be integers,我对Python和Pandas以及数据挖掘都是陌生的,所以如果有人可以澄清一下,我将非常感激。提前致谢。

最佳答案

我将要做的 ..

df.apply(lambda x : (x-x.min())/(x.max()-x.min()))

08-03 14:19