我有一个带有此列的数据框
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')
你能帮我吗?,对不起我的英语
答案 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