Pandas:将日期范围解压缩为单个日期

2023-11-23

Dataset:我有一个 1GB 的股票数据集,其中包含日期范围内的值。日期范围没有重叠,数据集按(股票代码、开始日期)排序。

>>> df.head()
             start_date    end_date                   val    
ticker         
AAPL         2014-05-01  2014-05-01         10.0000000000
AAPL         2014-06-05  2014-06-10         20.0000000000
GOOG         2014-06-01  2014-06-15         50.0000000000
MSFT         2014-06-16  2014-06-16                  None
TWTR         2014-01-17  2014-05-17         10.0000000000

Goal:我想解压缩数据框,以便拥有单独的日期而不是日期范围。例如,AAPL 行将从只有 2 行变为 7 行:

>>> AAPL_decompressed.head()
                   val
date                       
2014-05-01         10.0000000000
2014-06-05         20.0000000000
2014-06-06         20.0000000000
2014-06-07         20.0000000000
2014-06-08         20.0000000000

我希望 pandas 有一个很好的优化方法,比如重新采样,可以在几行内完成此操作。


比几行多一点,但我认为它会产生你所问的结果:

从您的数据框开始:

In [70]: df
Out[70]:
       start_date   end_date  val  row
ticker
AAPL   2014-05-01 2014-05-01   10    0
AAPL   2014-06-05 2014-06-10   20    1
GOOG   2014-06-01 2014-06-15   50    2
MSFT   2014-06-16 2014-06-16  NaN    3
TWTR   2014-01-17 2014-05-17   10    4

首先,我将这个数据框重塑为一个带有一个的数据框date列(因此每行对于每个日期重复两次start_date and end_date(我添加了一个名为row):

In [60]: df['row'] = range(len(df))
In [61]: starts = df[['start_date', 'val', 'row']].rename(columns={'start_date': 'date'})
In [62]: ends = df[['end_date', 'val', 'row']].rename(columns={'end_date':'date'})
In [63]: df_decomp = pd.concat([starts, ends])
In [64]: df_decomp = df_decomp.set_index('row', append=True)
In [65]: df_decomp.sort_index()
Out[65]:
                 date  val
ticker row
AAPL   0   2014-05-01   10
       0   2014-05-01   10
       1   2014-06-05   20
       1   2014-06-10   20
GOOG   2   2014-06-01   50
       2   2014-06-15   50
MSFT   3   2014-06-16  NaN
       3   2014-06-16  NaN
TWTR   4   2014-01-17   10
       4   2014-05-17   10

基于这个新的数据框,我可以将其分组ticker and row,并每天应用resample对每个组和fillna(使用方法“pad”向前填充)

In [66]: df_decomp = df_decomp.groupby(level=[0,1]).apply(lambda x: x.set_index('date').resample('D').fillna(method='pad'))

In [67]: df_decomp = df_decomp.reset_index(level=1, drop=True)

最后一个命令是删除现在多余的row指数级别。
当我们访问 AAPL 行时,它会给出您想要的输出:

In [69]: df_decomp.loc['AAPL']
Out[69]:
            val
date
2014-05-01   10
2014-06-05   20
2014-06-06   20
2014-06-07   20
2014-06-08   20
2014-06-09   20
2014-06-10   20
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas:将日期范围解压缩为单个日期 的相关文章

随机推荐

  • PHP 将一个类的实例传递给另一个类

    我对 PHP OO 编程技术还是比较陌生 我有一个非常简单的广泛问题 在类中实例化一个类然后将该实例传递给另一个类通常是不好的做法吗 我想要的是能够创建我知道在每个用户请求中始终需要的特定类的实例 第二类不仅仅是一个辅助类 理想情况下在我的
  • java:为什么局部变量应该声明为final [重复]

    这个问题在这里已经有答案了 可能的重复 在Java中将方法参数声明为final是否有任何性能原因 为什么在 Java 中将局部变量和方法参数标记为 final 我正在使用 PMD 来查看代码违规情况 在 webService 方法中 我有下
  • C# 如何检查两个值之一是否为 TRUE?

    对于 C 专家来说这应该是一个简单的问题 我基本上想检查一个值或另一个值是否为 TRUE 代码如下 if Boolean Parse staff getValue Male Boolean Parse staff getValue Fema
  • 更改 DataGridView 中按钮的颜色

    我到处寻找这个问题的答案 这篇文章的答案 更改 DataGridView 单元格中按钮的颜色没有回答我关于字体的问题 我已经尝试过以下方法 DataGridViewRow r dataGridView Rows 0 r Cells 1 St
  • 用于 PHP 的 Microsoft sqlsrv 驱动程序在查询“SELECT SCOPE_IDENTITY() AS id”时不返回任何结果

    使用 php mssql 驱动程序 此查询工作正常 INSERT INTO Table columnName VALUES text SELECT SCOPE IDENTITY AS id 表确实有一个 id 列 它是一个标识 我将执行该查
  • MVC - 模型与同一页面上的多个实体绑定

    我想知道如何在从页面上多个实体返回信息的场景中使用模型绑定 我想显示来自两个单独实体的字段组合 即客户 地址 我正在为我的模型使用 Microsoft 的 DAAB 和自定义业务实体 有任何想法吗 如果您尝试在回发时绑定到多个模型 则应尝试
  • 如何在 MS SQL Server 2008 上设置日期格式

    我想根据模式格式化日期 例如 22 01 2015 或 2016 12 15 在 NET Framework 中 我们有 DateTime gt ToString 方法 它接受格式作为参数 甚至接受 string Format 它的作用相同
  • 在 Web 应用程序中处理时区

    在我们的网络应用程序中 我们需要显示并输入 不同时区不同国家的日期时间信息 目前 我们正在为每个国家 地区维护单独的 Web 服务器和单独的数据库 oracle 11g 我们计划将所有内容合并到一个具有单一数据库 Oracle 11g 的门
  • 如何在此 SSRS 表达式中“指定数据集聚合”?

    我的 SSRS 报告中需要一个行值 该值是根据报告中已使用的几个字段计算得出的 我希望它显示在名为 textboxPercentageValue 的文本框中 用半简单的英语来说 表达式 公式是 If the value of the Wee
  • Android 自定义 ArrayAdapter 在过滤后不刷新

    所以我有一个习惯ArrayAdapter所以我可以使用标题 副标题视图ListView 我有一个EditText它接受一个字符串并过滤适配器 过滤器的工作原理是过滤正确的对象 我可以通过单击它来判断 它以正确的 附加 开始意图 但是 即使过
  • Javascript:关于如何定义新数据类型有哪些指导原则?

    假设您正在创建数据类型并公开其行为 您能否举例说明何时使用 一个功能和新功能 define new data type var CustomDataType function this a whatever this doX functio
  • 设置内联元素的宽度

    您可以设置内联元素的宽度 例如 span em and strong 但在放置它们之前您不会注意到任何效果 a 我以为内联元素的宽度不能设置 b 假设可以设置宽度 在我们定位内联元素之前 我们不会注意到任何效果 因此我们指定的宽度 位置如何
  • “撤消”功能的最佳设计模式[重复]

    这个问题在这里已经有答案了 可能的重复 撤消引擎的设计模式 一般来说 您如何处理应用程序中支持 撤消 功能的问题 我曾经开发过网络应用程序和桌面应用程序 但我从来没有真正对我制作的任何 撤消 系统感到满意 我相信应该是Command设计模式
  • Angular2.js 与 Angular2.dev.js

    我想知道之间的差异angular2 js and angular2 dev js 当然还有更多文件 例如 router dev js and router js还有 我的问题是为什么有两个版本 它们之间有什么区别 angular2 dev
  • Ruby on Rails 使用外键删除固定装置

    我在使用使用外键的装置设置测试时遇到问题 如果有人能帮助我理解这一点 我将不胜感激 比方说 user type模型有一个参考 role模型 当测试执行时 测试数据库中的所有数据都被删除并再次重新插入 Rails 首先从角色模型中删除数据 而
  • 在 JS 中访问 Asp.Net Session 变量

    我无法访问 js 文件中的变量 我在页面顶部的代码是 然后我想访问我的 js 文件中的权限 我现在只想提醒您这一点 我能做到吗 thanks 您必须将会话值存储在隐藏字段中 之后您可以在 JS 中访问隐藏的 FieldValue
  • php中的应用范围

    我需要在所有请求之间共享相同的数组对象 无论来自同一浏览器 用户的请求如何 php 中是否有任何应用程序范围可以存储该数组对象 我正在使用 php 5 x 如果您想在每个用户的所有请求中共享它 使用会话可能是要走的路 如果您想在所有用户的所
  • 从 dict 创建 ORM 对象并添加到会话中

    假设我有一个User具有属性的模型id name email和一段关系languages 是否有可能创建一个User来自现有数据的实例 其行为就像我查询它一样dbsession query User get 42 我的意思特别是我希望能够访
  • 在 Qt MainWindow 上设置 WA_DeleteOnClose 属性时,删除 ui 指针时程序崩溃

    我已经设置了WA DeleteOnClose主窗口中的小部件属性 setAttribute Qt WA DeleteOnClose 但是 每当我关闭该主窗口时 我都会在其析构函数中遇到段错误 该析构函数只包含delete ui 简而言之 在
  • Pandas:将日期范围解压缩为单个日期

    Dataset 我有一个 1GB 的股票数据集 其中包含日期范围内的值 日期范围没有重叠 数据集按 股票代码 开始日期 排序 gt gt gt df head start date end date val ticker AAPL 2014