pandas - pandas df 基于多个条件的查找值
问题描述
我的 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 中,我得到一个空数据框。您的帮助将不胜感激。
解决方案
我相信需要将 column 转换expiry_date
为date
s 并比较浮动使用numpy.isclose
:
symbols.loc[(symbols.expiry_date.dt.date == exp_date)
& (symbols.code == code)
& (symbols.type == type)
& np.isclose((symbols.strike, strike)]
推荐阅读
- android - 如何在回收站视图中添加 onclciklistner 及其位置
- javascript - 尝试使用 VueJS 过滤数组并仅显示结果
- powershell - 在 PS 脚本中处理 PSSession
- c - "%13s" 或 "%13d" 在 C 中代表什么
- javascript - 是否可以在不了解移动应用程序前端的情况下构建 REST API
- c# - 使用“TAP”设计模式执行许多长时间运行的任务
- sql - 在 WHERE 子句中使用短路会提高速度吗
- spring - 如何在spring boot的主项目(有两个依赖项目)中使用message.properties文件?
- sql - 一行代码中断否则工作查询
- python - 在python中按多个键对字典进行分组