我从一个不包含时间戳列的数据帧开始。我的目标是创造一个。我所知道的是,这些行按时间升序排列,并且第一天的最小日期可能是2008-01-01或更晚,而最后一天的最大日期可能是2010-11-30。行表示当天可能发生或未发生的事件。因此,一天中可能会有多行。
幸运的是,此数据帧包含每日euribor3m汇率列,因此,假设每次汇率值变化时都有新的一天,我逐行进行比较,仅保留发生值变化的行。现在,这并不完美,因为从技术上讲,连续两天可能具有相同的费率值,但已经足够接近了。我用行的子集创建了一个名为res的新df。
然后,我从其他来源下载了一个实际euribor3m速率的单独文件。该文件包括时间戳,没有空值或缺少日期。我为上面提到的日期范围过滤了行。因此,我现在的目标是加入时间戳并将其应用于原始文件。
这里有个问题:我不能简单地进行联接,因为res数据帧可能会跳过某些天,并且/或者连续几天都可能发生相同的速率(如上所述)。但是,在两个数据帧之间进行head()和tail()比较时,模式非常接近。
所以我的问题是:如何基于比率值来匹配这两个数据帧,知道res数据帧可能会跳过某些天,并且知道我无法匹配单个值作为键?是否可能有一种模式匹配的方法,例如从res数据帧euribor3m速率中获取x行,并根据序列将第二个文件与x行进行匹配,并丢弃介于两者之间的值(这将反映未报告的天数)在原始文件中?)
#Original DF:
res['euribor3m'].tail(10)
41108 1.048
41123 1.046
41129 1.044
41138 1.041
41148 1.040
41157 1.039
41164 1.035
41170 1.030
41178 1.031
41187 1.028
Name: euribor3m, dtype: float64
#Second file DF:
#Notice the value column is the euribor 3m rate
euribor_daily_df.tail(10)
Date Value
2074 2010-11-16 1.046
2073 2010-11-17 1.044
2072 2010-11-18 1.041
2071 2010-11-19 1.040
2070 2010-11-22 1.039
2069 2010-11-23 1.035
2068 2010-11-24 1.030
2067 2010-11-25 1.031
2066 2010-11-26 1.028
2065 2010-11-29 1.027