如何根据公共日期列有效合并多个数据框?

Susan Sarandon
发布: 2024-11-12 12:36:02
原创
972 人浏览过

How do I efficiently merge multiple dataframes based on a common date column?

根据日期合并多个数据帧

您有多个具有公共日期列但行数和列数不同的数据帧。目标是合并这些数据帧以获得每个日期对所有数据帧通用的行。

低效递归方法

您尝试使用递归函数来合并数据帧是有缺陷的。该函数进入无限循环,因为它不断使用相同的输入调用自身。这种方法效率低下且容易出错。

使用reduce的优化解决方案

合并多个数据帧的更有效方法是使用functools模块中的reduce函数。此函数通过对相邻的数据帧对重复应用指定的合并操作,将数据帧列表缩减为单个数据帧。

以下代码片段演示了这种方法:

import pandas as pd
from functools import reduce

dfs = [df1, df2, df3]  # list of dataframes

df_merged = reduce(lambda left, right: pd.merge(left, right, on='date', how='outer'), dfs)
登录后复制

在此代码中,reduce 函数通过迭代合并相邻的数据帧对将 dfs 列表缩减为单个数据帧。 on='date' 参数指定应根据日期列执行合并。 how='outer' 参数确保两个数据帧中的所有行都包含在合并结果中,即使它们不共享相同的日期。

reduce 函数的优点

使用reduce函数提供了几个优点:

  • 简单:代码简洁且易于理解。
  • 无嵌套:与递归方法不同,有合并操作无嵌套,消除无限的风险
  • 扩展性:您可以从 dfs 列表中添加或删除数据帧,以动态更改合并操作。

示例

使用提供的数据帧 df1、df2 和df3,您将获得以下合并数据框:

       DATE  VALUE1  VALUE2  VALUE3
0  May 15, 2017  1901.00  2902.00  3903.00
登录后复制

此数据框仅包含日期与所有三个输入数据框相同的行。

以上是如何根据公共日期列有效合并多个数据框?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板