我的df称为符号如下所示:
local_symbol code globex expiry_date type strike
symbol
OZN20121221P00014900_FOP P OZN DEC 12 14900 CBT_21_F2013_S OZN 2012-12-21 P 149.0
OZN20121221C00012500_FOP C OZN DEC 12 12500 CBT_21_F2013_S OZN 2012-12-21 C 125.0
OZN20121221P00012450_FOP P OZN DEC 12 12450 CBT_21_F2013_S OZN 2012-12-21 P 124.5
OZN20121221C00013900_FOP C OZN DEC 12 13900 CBT_21_F2013_S OZN 2012-12-21 C 139.0
OZN20121221C00010700_FOP C OZN DEC 12 10700 CBT_21_F2013_S OZN 2012-12-21 C 107.0
使用pandas 0.22.0以下工作:
exp_date = dt.date(2012, 12, 21)
code = 'CBT_21_F2013_S'
type = 'P'
strike = 124.5
symbols.loc[(symbols.expiry_date == exp_date)
& (symbols.code == code)
& (symbols.type == type)
& (symbols.strike == strike)]
并返回OZN20121221P00012450_FOP作为预期值。在Pandas 0.23中,我得到一个空的数据帧。非常感谢您的帮助。
答案 0 :(得分:1)
我认为需要将列expiry_date
转换为date
,并且比较浮点数使用numpy.isclose
:
symbols.loc[(symbols.expiry_date.dt.date == exp_date)
& (symbols.code == code)
& (symbols.type == type)
& np.isclose((symbols.strike, strike)]