если заявление логическая ошибка в списке понимание

голоса
0

Я пытаюсь умножить -1 для всех кредитных расходов, сохраняя при этом дебет заряжает же , используя список понимание , но, то , если функция была проигнорирована. Я подозреваю , что есть ошибка синтаксиса здесь , if transactions['Transaction Type'] is debitно я не могу понять, почему.

Вот код

transactions['Value'] = [i if transactions['Transaction Type'] is debit else i*-1 for i in transactions['Amount']]

print(transactions.loc[:, ['Amount','Transaction Type','Value']])

Результат содержит все отрицательные значения на стоимость:

             Amount Transaction Type    Value
Date                                         
2018-12-06    19.57            debit   -19.57
2018-12-06    27.87            debit   -27.87
2018-12-06     6.25            debit    -6.25
2018-12-06    14.38            debit   -14.38
2018-12-06    15.60            debit   -15.60
...             ...              ...      ...
2019-11-30    10.59            debit   -10.59
2019-11-30    51.32            debit   -51.32
2019-11-30   634.51           credit  -634.51
2019-12-01  4432.00            debit -4432.00
2019-12-01     5.00            debit    -5.00
Задан 02/12/2019 в 23:52
источник пользователем
На других языках...                            


1 ответов

голоса
0

Есть две проблемы в if transactions['Transaction Type'] is "debit"части , как вы подозреваемой.

Во- первых, с помощью isпроверки , если два объекта являются тот же объект , а не , если они равны.

Во- вторых, transactions['Transaction Type']скорее всего , список (или , по крайней мере , список подобных), на основе другой информации в вашем вопросе. Даже если вы используете , ==как вы должны быть, он все равно будет False, потому что список никогда не будет равна строке.

Затем вы итерация значения в transactions['Values'], но только когда - либо по сравнению с transactions['Transaction Type']записью (что опять - таки, является список). Вы должны итерации как в то же самое время , так что вы сравниваете тип транзакции с правильным количеством:

transactions['Value'] = [
    i if j == "debit" else i * -1
    for i, j in zip(transactions['Amount'], transactions['Transaction Type'])
]
Ответил 03/12/2019 в 00:03
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more