基于公式剔除双表匹配观测值:日内与日度价格校验开发需求
实现步骤与代码示例
我会用Python的Pandas库来搞定这个任务——这是处理结构化金融数据的首选工具之一,代码清晰还容易维护。
步骤1:按name和date匹配两张表
首先得把日内价格表和日度价格表用name和date这两个关键字段做内连接,这样就能只保留两张表中同时存在的name-date组合,避免出现没有对应日度价格的日内数据。
步骤2:剔除超出价格区间的观测值
合并完成后,我们先算出日度价格的上下阈值(0.962倍到1.0398倍),再用这个区间过滤掉不符合要求的日内价格记录。
完整代码示例
假设你的日内数据表叫intraday_df,日度数据表叫daily_df,代码如下:
import pandas as pd # 步骤1:内连接合并两张表,只保留匹配成功的观测值 merged_df = pd.merge( intraday_df, daily_df, on=['name', 'date'], how='inner' ) # 步骤2:计算价格区间的上下限 merged_df['lower_threshold'] = merged_df['daily price'] * 0.962 merged_df['upper_threshold'] = merged_df['daily price'] * 1.0398 # 筛选符合区间的记录,同时移除临时生成的阈值列 filtered_df = merged_df[ (merged_df['intraday price'] >= merged_df['lower_threshold']) & (merged_df['intraday price'] <= merged_df['upper_threshold']) ].drop(columns=['lower_threshold', 'upper_threshold']) # 查看处理后的结果 print(filtered_df.head())
补充说明
- 如果你的数据存在缺失值(比如某条日内数据找不到对应日度价格),
how='inner'会自动排除这些记录;要是想保留并标记缺失,可以把how改成left,后续再处理NaN值。 - 要是用SQL来实现,逻辑也是完全一致的:先做JOIN,再用WHERE子句筛选区间。核心SQL语句大概是这样:
SELECT i.*, d.`daily price` FROM intraday_table i JOIN daily_table d ON i.name = d.name AND i.date = d.date WHERE i.`intraday price` BETWEEN d.`daily price`*0.962 AND d.`daily price`*1.0398;
内容的提问来源于stack exchange,提问作者Amin Karimi
相关产品推荐
相关产品推荐

