Pandas 将多个数据帧与时间戳索引对齐

2023-11-27

这一直是我过去几天生活中的祸根。我有许多 Pandas Dataframes,其中包含频率不规则的时间序列数据。我尝试将它们对齐到一个数据框中。

下面是一些代码,具有代表性的数据帧,df1, df2, and df3(我实际上有 n=5,并且希望有一个适用于所有人的解决方案n>2):

# df1, df2, df3 are given at the bottom
import pandas as pd
import datetime

# I can align df1 to df2 easily
df1aligned, df2aligned = df1.align(df2)
# And then concatenate into a single dataframe
combined_1_n_2 = pd.concat([df1aligned, df2aligned], axis =1 )
# Since I don't know any better, I then try to align df3 to combined_1_n_2  manually:
combined_1_n_2.align(df3)
error: Reindexing only valid with uniquely valued Index objects

我知道为什么会出现此错误,因此我删除了重复索引combined_1_n_2然后再试一次:

combined_1_n_2 = combined_1_n_2.groupby(combined_1_n_2.index).first()
combined_1_n_2.align(df3) # But stll get the same error
error: Reindexing only valid with uniquely valued Index objects

为什么我会收到此错误?即使这有效,它也是完全手动且丑陋的。如何对齐 >2 个时间序列并将它们合并到一个数据框中?

Data:

df1 = pd.DataFrame( {'price' : [62.1250,62.2500,62.2375,61.9250,61.9125 ]}, 
                     index = [pd.DatetimeIndex([datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S.%f')])[0] 
                     for s in ['2008-06-01 06:03:59.614000', '2008-06-01 06:03:59.692000', 
                     '2008-06-01 06:15:42.004000', '2008-06-01 06:15:42.083000','2008-06-01 06:17:01.654000' ] ])   

df2 = pd.DataFrame({'price': [241.0625, 241.5000, 241.3750, 241.2500, 241.3750 ]},
                    index = [pd.DatetimeIndex([datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S.%f')])[0] 
                     for s in ['2008-06-01 06:13:34.524000', '2008-06-01 06:13:34.602000', 
                     '2008-06-01 06:15:05.399000', '2008-06-01 06:15:05.399000','2008-06-01 06:15:42.082000' ] ])   

df3 = pd.DataFrame({'price': [67.656, 67.875, 67.8125, 67.75, 67.6875 ]},
                    index = [pd.DatetimeIndex([datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S.%f')])[0] 
                     for s in ['2008-06-01 06:03:52.281000', '2008-06-01 06:03:52.359000', 
                     '2008-06-01 06:13:34.848000', '2008-06-01 06:13:34.926000','2008-06-01 06:15:05.321000' ] ])   

您的具体错误是由于列名引起的combined_1_n_2有重复项(两列都将被命名为“价格”)。您可以重命名列,第二次对齐就可以了。

一种替代方法是链接join运算符,它合并索引上的帧,如下所示。

In [23]: df1.join(df2, how='outer', rsuffix='_1').join(df3, how='outer', rsuffix='_2')
Out[23]: 
                              price   price_1  price_2
2008-06-01 06:03:52.281000      NaN       NaN  67.6560
2008-06-01 06:03:52.359000      NaN       NaN  67.8750
2008-06-01 06:03:59.614000  62.1250       NaN      NaN
2008-06-01 06:03:59.692000  62.2500       NaN      NaN
2008-06-01 06:13:34.524000      NaN  241.0625      NaN
2008-06-01 06:13:34.602000      NaN  241.5000      NaN
2008-06-01 06:13:34.848000      NaN       NaN  67.8125
2008-06-01 06:13:34.926000      NaN       NaN  67.7500
2008-06-01 06:15:05.321000      NaN       NaN  67.6875
2008-06-01 06:15:05.399000      NaN  241.3750      NaN
2008-06-01 06:15:05.399000      NaN  241.2500      NaN
2008-06-01 06:15:42.004000  62.2375       NaN      NaN
2008-06-01 06:15:42.082000      NaN  241.3750      NaN
2008-06-01 06:15:42.083000  61.9250       NaN      NaN
2008-06-01 06:17:01.654000  61.9125       NaN      NaN
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas 将多个数据帧与时间戳索引对齐 的相关文章

随机推荐

  • 将 OpenApi 路径拆分为多个路径定义文件

    我想更轻松地将我的路径 相当多 分割成它们自己的文件 假设我有两条主要路径 user and anotherPath有几个子路径 现在我有了一个 OpenApi 规范文件 其路径被引用到一个索引文件 该索引文件保存对每个路径的引用 用其参考
  • 64 位编译器中的浮点支持

    我们应该对 64 位 Delphi 编译器中的浮点支持有何期待 64位编译器会使用SSE吗 实现浮点运算 64位编译器支持吗 当前80位浮点类型 扩展 这些问题密切相关 所以我将它们作为一个问题来问 我就这个主题发表了两篇文章 here a
  • 如何发布一个空数组(整数)(jQuery -> MVC 3)

    使用 jQuery 我发布了一个数组int通过将数组放入 data 参数中来添加到我的 MVC 3 应用程序 如下所示 data myIntArray myIntArray 在我的控制器中 接收操作有一个参数int myIntArray 这
  • 如何在模型-视图-视图模型架构中的模型方法中间干净地获取用户输入?

    我正在编写一个侦听网络连接的应用程序 当一些数据到达时 它会回复 并且根据传入的数据 它可能需要在回复之前询问用户 显示对话框 我不知道如何在 M V VM 架构中干净地做到这一点 如果我只需要根据传入数据更新 GUI 那么事件和绑定到可观
  • 没有办法在 JavaScript 中拥有基于类的对象吗?

    基于 javascript 原型的面向对象编程风格很有趣 但是在很多情况下您需要能够从类创建对象 例如 在矢量绘图应用程序中 工作区在绘图开始时通常是空的 我无法从现有的 线 创建新的 线 更一般地说 动态创建对象的每种情况都需要使用类 我
  • 如何优雅地关闭嵌入式码头

    我有一个应用程序在嵌入式码头服务器上运行 现在我想启动 停止服务器作为服务 我使用脚本来启动服务器 java JAVA OPTS DREQ JAVA VERSION JAVA VERSION jar myjetty jar 主班 Serve
  • javascript:访问不同框架中的对象?

    如果我在 1 页上有一个框架集的 2 个框架 JS 有没有办法访问相对框架中的元素 Thanks 是的 但前提是两个框架上的页面位于同一域中 你可以做document getElementById frame id contentWindo
  • 如何在 RSS feed 上的 元素中正确放置日期

    我正在使用 RSS Graffitty 将 RSS 项目发布到 Facebook 页面 该应用程序告诉我这些项目缺少发布日期 所以我添加了这个标签 echo
  • 如何使用 Eclipse 处理 Boost.Test 输出

    我正在使用 Eclipse CDT 和 Boost Test 带有 Boost Build 我希望 Eclipse 能够解析构建期间运行测试套件期间生成的 Boost Test 的输出 有人知道如何实现这一目标吗 提前致谢 转至窗口 gt
  • Autofac命名注册构造函数注入

    Autofac是否支持在组件的构造函数中指定注册名称 示例 Ninject 的NamedAttribute 您需要使用顶部的 Autofac Extras Attributed 包来实现此目的 假设您有一个接口和两个类 public int
  • 使用 Android getIdentifier()

    我试过这个 r Resources getSystem getIdentifier ball red drawable com Juggle2 Log i FindBall R r 和这个 r Resources getSystem get
  • 使用花括号初始化列表调用显式构造函数:是否不明确?

    考虑以下 struct A A int int struct B B A 1 explicit B int int 2 int main B paren 1 2 3 B brace 1 2 4 的建设brace in 4 明确无误地呼吁 2
  • 如何隐藏滚动条上的灰点

    In Visual Studio 2015 2017 我们怎样才能隐藏Vertical Scrollbar的灰点如下图 如果您试图隐藏由 建议 而不是书签 引起的灰点 那么这就是具体的设置 Tools gt Options gt Envir
  • 调用第三方 API 时处理 CORS

    yes this is a very famous question I have tried many ways mentioned in the previous stack overflow QnA but nothing worke
  • PowerShell 3.0 新功能 [ordered] 的用例

    PowerShell 3 0 CTP1引入新功能 ordered 这在某种程度上是一个捷径OrderedDictionary 我无法想象它的实际用例 为什么这个功能真的很有用 有人可以提供一些有用的例子吗 示例 恕我直言 这是演示案例而不是
  • 在Java中生成所有排列[重复]

    这个问题在这里已经有答案了 可能的重复 生成给定字符串的所有排列 我在 Java 中有一个任意长度的数组 我想生成它们的所有可能的排列 对于固定长度执行此操作的简单方法是一系列嵌套的 for 循环 但由于数组的长度未知 因此这里不提供这种选
  • 数组/集合和 for Each 循环中的用户定义类型

    VBA 在弹出窗口中显示 不允许我迭代具有用户定义类型的数组 我写了一些代码 想知道如何解决这个问题 这是一个小例子 重点关注我想要做的事情 Option Explicit Type Info source As String destin
  • Magento - OnePage Checkout - 根据运输方式隐藏付款方式

    我已经问过这个问题Magento 堆栈交换没有任何成功 因此我现在在这里问 我正在使用 Magento Community Edition 1 9 0 1 并已正确创建和注册我的模块 但我似乎无法检测到运输方式 基本上 我想隐藏货到付款 i
  • 如何正确过滤数据表(datatable.select)

    Dim dt As New DataTable Dim da As New SqlDataAdapter s c c Open If Not IsNothing da Then da Fill dt dt Select GroupingID
  • Pandas 将多个数据帧与时间戳索引对齐

    这一直是我过去几天生活中的祸根 我有许多 Pandas Dataframes 其中包含频率不规则的时间序列数据 我尝试将它们对齐到一个数据框中 下面是一些代码 具有代表性的数据帧 df1 df2 and df3 我实际上有 n 5 并且希望