if logikai hiba lista megértés

szavazat
0

Próbálom többszörösen -1 minden hitel díjak, miközben beszedési díjak ugyanazon a listán megértés, hanem az, ha a funkció figyelmen kívül hagyták. Gyanítom van egy szintaktikai hiba van if transactions['Transaction Type'] is debit, de nem tudok rájönni, hogy miért.

Itt a kód

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

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

Az eredmény tartalmazza az összes negatív értékeket Érték:

             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
A kérdést 02/12/2019 23:52
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Két probléma a if transactions['Transaction Type'] is "debit"rész, ahogy sejtettem.

Először is, a iscsekkek, ha két objektum az ugyanazt a tárgyat , akkor nem, ha azok egyenlőek.

Másodszor, transactions['Transaction Type']valószínűleg egy listát (vagy legalábbis lista-szerű), amely a többi info a kérdésre. Még ha arra használja ==, mint te kell, ez még mindig False, mert a lista soha nem lesz egyenlő a húr.

Akkor, te iterációjával az értékeket transactions['Values'], de mindig csak összehasonlítjuk a transactions['Transaction Type']bejegyzést (ami megint egy lista). Meg kell hajtogat mind ugyanabban az időben, hogy csak összehasonlítjuk az ügylet típusától függően a megfelelő összeg:

transactions['Value'] = [
    i if j == "debit" else i * -1
    for i, j in zip(transactions['Amount'], transactions['Transaction Type'])
]
Válaszolt 03/12/2019 00:03
a forrás felhasználó

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