为什么遍历我的 pandas 数据会改变值?

Why is iterating through my pandas data changing the values?

我正在尝试构建一个函数,该函数允许我遍历 pandas 数据帧的一行并更改其值 "yes"、"maybe" 或 "no" 分别为 1、0 和 -1。在使用完全相同的过程之前,我已经完成了此操作,但出于某种原因,这一次,它给了我一个关键错误。当它不工作时,我试图简化它以查看迭代器是否正常工作并发现迭代器以某种方式更改了我的数据。使用下面的代码

def testing(data):
    print(data)
    for i in range(len(data)):
        print(data[i])

testing(train_x['Values'])

函数returns下面然后点击'Key Error: 7'

137       no
84        no
27       yes
127    maybe
132       no
       ...  
9         no
103      yes
67        no
117    maybe
47        no
Name: Value, Length: 120, dtype: object
yes
no
no
no
no
no
no

有谁知道为什么会这样?它是否与由于 train_tests_split 而被打乱的值有关?上次我这样做是在 train_test_split 之前完成的,它工作得非常好,但从那时起,我意识到如果在拆分之后进行数据预处理会更有效,以防止数据泄漏。如果拆分是问题所在,是否可以使用不同的迭代器解决此问题?

train_test_split 确实会打乱值。 您可能想试试这个:

替换:

def testing(data):
    print(data)
    for i in range(len(data)):
        print(data[i])

有:

def testing(data):
    for i in data.index:
        print(data.iloc[i])