首页 > 解决方案 > 比较两列之间的顺序模式 - Pandas

问题描述

我从一个不包含时间戳列的数据框开始。我的目标是创造一个。我所知道的是,这些行按时间升序排序,最小的第一天可能是 2008 年 1 月 1 日或更晚,最大的最后一天可能是 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

标签: python-3.xpandasdataframecomparison

解决方案


推荐阅读