【发布时间】:2018-09-20 03:14:15
【问题描述】:
我正在尝试做一个 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)
这很好用,可以做我想做的事。
然后我尝试编写一个 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']
但是,这不能正常工作。它正在创建两个新字段,CurrencyFlip 和 NotionalFlip,但将每条记录都视为 False,并粘贴之前的内容。
有人有什么想法吗?
【问题讨论】:
标签: python pandas if-statement dataframe boolean