如何在没有复杂迭代器的情况下基于公共列有效地合并多个 DataFrame?

Linda Hamilton
发布: 2024-11-21 09:05:11
原创
875 人浏览过

How can you efficiently merge multiple DataFrames based on a common column without complex iterators?

合并多个 DataFrame

问题陈述

合并多个 DataFrame 可能是一项艰巨的任务,尤其是当 DataFrame 具有不同的值时形状和结构。最常见的方法是迭代地使用 merge() 函数,这对于大量数据帧来说可能会变得复杂且不可读。

问题

一个人如何合并多个高效且优雅地基于公共列的数据帧,无需诉诸递归或复杂的方法迭代器?

答案

reduce() 函数为合并多个数据帧提供了递归的替代方法。 reduce() 函数迭代地将函数应用于项目列表,将其减少为单个值。在本例中,函数是 merge() 函数,项目列表是数据帧列表。

import pandas as pd
from functools import reduce

# Load dataframes
df1 = pd.read_csv('dataframe1.csv')
df2 = pd.read_csv('dataframe2.csv')
df3 = pd.read_csv('dataframe3.csv')

# Create a list of dataframes
dataframes = [df1, df2, df3]

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

说明

reduce()调用函数时,函数 pd.merge 作为第一个参数,数据帧列表作为第二个参数。 pd.merge() 函数合并两个数据帧,reduce() 函数迭代地将结果与列表中的下一个数据帧合并,将列表缩减为单个合并的数据帧。

on='date'参数指定应基于“日期”列执行合并,假定该列对所有数据帧都是通用的。 how='outer' 参数指示两个数据帧中的所有行都应包含在合并的数据帧中,无论它们是否具有“日期”列的相应值。这可确保具有相同日期值的所有行合并为一行。

结果

df_merged 变量现在包含一个合并的数据帧,其中包含来自各个数据帧,每个数据帧中的相应行根据“日期”列对齐。该方法高效、灵活且易于阅读,使其成为合并大量数据帧的理想解决方案。

以上是如何在没有复杂迭代器的情况下基于公共列有效地合并多个 DataFrame?的详细内容。更多信息请关注PHP中文网其他相关文章!

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