问题陈述
合并多个 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中文网其他相关文章!