我试图将-1乘以所有贷方费用,同时使用列表推导使借方费用保持相同,但是,if函数被忽略了。我怀疑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
答案 0 :(得分:1)
您怀疑if transactions['Transaction Type'] is "debit"
部分有两个问题。
首先,使用is
检查两个对象是否为same object,而不是相等。
第二,根据您问题中的其他信息,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'])
]