hvis setningen logisk feil for listen forståelse

stemmer
0

Jeg prøver å multiplisere -1 til alle kreditt kostnader samtidig debet lader det samme ved hjelp av liste forståelse, men ble om funksjonen ignorert. Jeg mistenker at det er en syntaksfeil her if transactions['Transaction Type'] is debit, men jeg kan ikke finne ut hvorfor.

Her er koden

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

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

Resultatet inneholder alle negative verdier på Verdi:

             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
Publisert på 02/12/2019 klokken 23:52
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Det er to problemer i if transactions['Transaction Type'] is "debit"delen som du mistenkt.

Først ved hjelp issjekker om to objekter er det samme objektet , ikke hvis de er like.

For det andre, transactions['Transaction Type']er mest sannsynlig en liste (eller i det minste liste-lignende), basert på den annen info i spørsmålet ditt. Selv om du bruker ==som du bør være, ville det fortsatt være False, fordi en liste aldri vil være lik en streng.

Så, du gjentar verdiene i transactions['Values'], men bare noensinne sammenligne til transactions['Transaction Type']oppføring (som igjen er en liste). Du må iterere begge på samme tid, slik at du sammenligner transaksjonstype med riktig mengde:

transactions['Value'] = [
    i if j == "debit" else i * -1
    for i, j in zip(transactions['Amount'], transactions['Transaction Type'])
]
Svarte 03/12/2019 kl. 00:03
kilden bruker

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