我试图乘-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
正如您所怀疑的,
if transactions['Transaction Type'] is "debit"
部分有两个问题。你知道吗首先,使用
is
检查两个对象是否是same object,而不是它们是否相等。你知道吗第二,
transactions['Transaction Type']
很可能是一个列表(或者至少是类似列表的),基于你问题中的其他信息。即使您使用的是==
,它仍然是False
,因为列表永远不会等于字符串。你知道吗然后,迭代
transactions['Values']
中的值,但只与transactions['Transaction Type']
条目(同样,它是一个列表)进行比较。您需要同时迭代这两者,以便将事务类型与正确的金额进行比较:相关问题 更多 >
编程相关推荐