比较两列之间的顺序模式-熊猫

时间:2019-01-06 08:09:28

标签: python-3.x pandas dataframe comparison

我从一个不包含时间戳列的数据帧开始。我的目标是创造一个。我所知道的是,这些行按时间升序排列,并且第一天的最小日期可能是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

0 个答案:

没有答案