python-3.x - 比较两列之间的顺序模式 - 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
解决方案
推荐阅读
- cakephp - 在客户助手中使用 Acl 组件
- python - 从python子类中的属性中删除属性(getter/setter)
- mysql - 我的 SQL 中存在日期和日期时间比较问题
- user-interface - Pentaho Report Designer 的 UI 太小
- c# - 部署时Winform应用程序重新启动不起作用
- reactjs - 如何将 ant.design 跨度重置为默认值?
- javascript - 使用 p5.js 在 JavaScript 中未定义 JSON 属性
- java - 将 JButton 添加到 JPanel 到 JFrame
- c# - 在 DbUpdateConcurrencyExpcetion 上实现乐观并发
- python - 如何正确处理类的属性变化?