Pandas - KeyError: ('var', 'произошел в индексе 1414') - цикл с for - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть датафрейм с этими столбцами

Gestor  No.Obligacion   Descripcion Codigo Gestion  Fecha Gestion   Fecha pago1 Fecha pago2 Fecha pago3 Fecha pago4 Fecha pago5 Fecha pago6 Fecha pago7 Fecha pago8 Fecha pago9

И я хочу сравнить Fecha pago1 с Fecha pago2

У меня есть это для функции

for x in range(1, 8):
    def cambiarrepetidos(row):
        if row['Fecha pago{0}'.format(x)] == row['Fecha pago{0}'.format(x+1)]:
            return "Sin Pago"
        else:
            pass
    RS2['Fecha pago1'] = RS.apply(cambiarrepetidos, axis=1)

input

FechaPago1  FechaPago2
12/09/2018   12/09/2018
11/09/2018   12/09/2018
09/09/2018   10/09/2018

output

FechaPago1   FechaPago2
12/09/2018   Sin Pago
11/09/2018   12/09/2018
09/09/2018   10/09/2018

Я хочу сделать то же самое с FechaPago1 FechaPago2 FechaPago3 до FechaPago9

Но я запускаю его и получаю это

KeyError: ('Fecha pago1', 'occurred at index 1414')

Можете ли вы мне помочь, пожалуйста, извините за мой английский

1 Ответ

0 голосов
/ 12 сентября 2018

Если я правильно понимаю, вы сравниваете значения в двух столбцах и, если они совпадают, замените значение в столбце 2 на «Sin Pago».

Вы можете сделать это без цикла.Первый оператор в loc является условием, и если условие истинно, присвойте значение столбцу, указанному после условия.

df.loc[df['FechaPago1'] == df['FechaPago2'], 'FechaPago2'] = 'Sin Pago'

    FechaPago1  FechaPago2
0   12/09/2018  Sin Pago
1   11/09/2018  12/09/2018
2   09/09/2018  10/09/2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...