熊猫-KeyError :(“ var”,“发生在索引1414”)-循环为

时间:2018-09-12 19:35:41

标签: python pandas function numpy for-loop

我有一个带有此列的数据框

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 pago1Fecha 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 :(得分:0)

如果我理解正确,您正在比较两列中的值,如果它们相同,则将第二列中的值替换为“ Sin Pago”。

您可以不进行循环操作。 loc中的第一个语句是条件,如果条件为true,则为条件之后指定的列分配一个值。

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