我试着做一个IF语句,它保持我的货币对按字母顺序排列(即USD/EUR会翻转到EUR/USD,因为E按字母顺序排在U之前,但CHF/JPY保持不变,因为C在J之前按字母顺序排列)最初我打算编写特定于此的代码,但意识到还有其他需要翻转的字段(主要是将符号改为负数,反之亦然.)
所以我所做的是编写一个函数来创建一个新的列,并建立一个布尔标识符来确定该字段是否需要动作(True)或不需要(False).
def flipFx(ccypair):
first = ccypair[:3]
last = ccypair[-3:]
if(first > last):
return True
else:
return False
brsPosFwd['Flip?'] = brsPosFwd['Currency Pair'].apply(flipFx)
Run Code Online (Sandbox Code Playgroud)
这很好用,做我想要的.
然后我尝试编写一个IF语句来使用该字段创建两个新列:
if brsPosFwd['Flip?'] is True:
brsPosFwd['CurrencyFlip'] = brsPosFwd['Sec Desc'].apply(lambda x:
x.str[-3:]+"/"+x.str[:3])
brsPosFwd['NotionalFlip'] = -brsPosFwd['Current Face']
else:
brsPosFwd['CurrencyFlip'] = brsPosFwd['Sec Desc']
brsPosFwd['NotionalFlip'] = brsPosFwd['Current Face']
Run Code Online (Sandbox Code Playgroud)
但是,这不能正常工作.它创建了两个新字段,CurrencyFlip和NotionalFlip,但是对每个记录都是假的,只是粘贴它之前的内容.
有没有人有任何想法?