Почему итерация по моим pandas данным меняет значения? - PullRequest
1 голос
/ 25 февраля 2020

Я пытаюсь создать функцию, которая позволит мне перебирать строку в pandas кадре данных и менять его значения «да», «возможно» или «нет» на 1, 0 и -1 соответственно. Я делал это до того, как использовал точно такой же процесс, но по какой-то причине на этот раз он дает мне ключевую ошибку. Когда он не работал, я попытался упростить его, чтобы посмотреть, правильно ли работает итератор, и обнаружил, что итератор каким-то образом меняет мои данные. Используя приведенный ниже код

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

testing(train_x['Values'])

Функция возвращает следующее и затем нажимает кнопку «Ошибка ключа: 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, и он работал отлично, но с тех пор я понял, что предварительная обработка данных более эффективна, если она выполняется после разделения, чтобы остановить утечку данных. Если проблема в разделении, есть ли способ решить эту проблему, используя другой итератор?

1 Ответ

3 голосов
/ 25 февраля 2020

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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...