python - 检索具有多个条件的值 - 熊猫
问题描述
样品日期:
数据框 1
cusip_id | trd_exctn_dt | time_to_maturity |
---|---|---|
00077AA2 | 2015-05-09 | 1.20年 |
00077TBO | 2015-05-06 | 3.08 年 |
数据框 2:
指数 | SVENY01 | SVENY02 | SVENY03 | SVENY04 |
---|---|---|---|---|
2015-05-09 | 1.35467 | 1.23367 | 1.52467 | 1.89467 |
2015-05-08 | 1.65467 | 1.87967 | 1.43251 | 1.98765 |
2015-05-07 | 1.35467 | 1.76567 | 1.90271 | 1.43521 |
2015-05-06 | 1.34467 | 1.35417 | 1.67737 | 1.11167 |
期望的输出:
我想将 df1 中的“trd_exctn_dt”与 df2 索引中的日期完全匹配,同时将 df1 中的“time_to_maturity”与 df2 中最近的 SVENYXX 匹配(四舍五入,例如 1.20 年将相当于 SVENY02 )。例如,对于 cusip_id (00077AA2),trd_exctn_dt 为 2015-05-09,time_to_maturity 为 1.20 年。在这种情况下,我想在 SVENY02 列中获取日期为 2015-05-09 的 df2 中的相应值。
我想对几个 cusip_id 重复此操作,我将如何实现?任何帮助,将不胜感激!
解决方案
这是我的解决方案代码:
import pandas as pd
SVENYXX = []
for i in range(df1['cusip_id'].shape[0]):
cusip_id = df1['cusip_id'][i]
trd_exctn_date = df1['trd_exctn_dt'][i]
maturity_time = df1['time_to_maturity'][i]
svenyVals = df2.loc[trd_exctn_date]
closestSvenyVal = svenyVals.iloc[(svenyVals-maturity_time).abs().argsort()[0]]
SVENYXX.append(closestSvenyVal)
其中df1
是 Dataframe 1,df2
是 Dataframe 2,并且SVENYXX
是与给定的所有 SVENYXX 值最接近的列表cusip_id
。
我遍历所有cusip_id
的并获得对应的trd_exctn_dt
值time_to_maturity
。然后使用提取的数据,我在 DataFrame 2 中找到相应的行,然后通过找到与svenyVals
相比的最小差异time_to_maturity
,我将该值附加到SVENYXX
列表中。
推荐阅读
- python - pandas multiindex 按行重新索引
- php - 如何在 php CMS 中添加标签和类别,然后在帖子中显示它们?
- php - PHP curl_exec 在没有错误日志的情况下停止执行脚本的其余部分
- javascript - 在 React 中单击时删除项目
- postgresql - Spring Boot 2.2.2 和“hibernate.hbm2ddl.auto=(create|create-drop|update|validate)”不起作用
- angular - Angular,ngrx - 选择器中的不定式循环问题
- javascript - Node Cluster 模块,与Passenger不兼容
- jquery - 如何使用 calc 和 css 将图像水平居中
- javascript - 405:不允许 - 我怎么知道 XMLHttpRequest 把我带到了哪里?
- swift - 将服务器私钥放在 Xcode 项目上的最佳位置