R语言中如何非迭代实现列表内3个含共同变量数据框的全外连接
多数据框全外连接的替代实现方法
Python(Pandas)
functools.reduce+pd.merge:无需手动编写迭代循环,用reduce自动遍历列表完成连续全外连接。假设共同变量名为common_col,数据框列表为df_list:from functools import reduce import pandas as pd merged_df = reduce(lambda left, right: pd.merge(left, right, on='common_col', how='outer'), df_list)pd.concat+ 分组聚合:适用于各数据框非共同列无重名的场景,先统一索引再拼接合并:# 将所有数据框的共同列设为索引 indexed_dfs = [df.set_index('common_col') for df in df_list] # 横向拼接后按索引分组,保留非空值 merged_df = pd.concat(indexed_dfs, axis=1).groupby(level=0).first().reset_index()
R语言
purrr::reduce+dplyr::full_join:借助purrr的reduce函数批量调用full_join,实现连续全外连接:library(dplyr) library(purrr) merged_df <- df_list %>% reduce(full_join, by = "common_col")data.table批量合并:针对大数据场景效率更高,转成data.table后用reduce完成合并:library(data.table) library(purrr) dt_list <- lapply(df_list, as.data.table) merged_dt <- reduce(dt_list, merge, by = "common_col", all = TRUE)
内容的提问来源于stack exchange,提问作者Miquel
相关产品推荐
相关产品推荐

