You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将单个dataframe与列表中多结构dataframe关联并填充新列

批量匹配填充DataFrame列(高效处理百万级数据)

需求:将主DataFrame df1 与包含多个规则DataFrame的列表 test 关联,填充新列 X,同时保留df1的所有原始记录,禁止产生重复行,且适配百万级数据量。

解决方案代码

library(dplyr)

# 合并所有匹配规则为单个DataFrame
bind_rows(test) -> match_rules

# 左连接填充X列,保留原数据所有行
df1 %>%
  left_join(match_rules, by = intersect(names(df1), names(match_rules))) -> final_result

# 输出结果
print(final_result)

方案说明

  1. 合并规则:先将test列表中的所有规则DataFrame合并为一个,避免循环多次连接带来的性能损耗和重复行问题
  2. 精准匹配:使用left_join,自动通过df1和规则表的共同列作为连接键(示例中第一个规则用Fruits+A匹配,第二个用Fruits+A+B匹配),仅对匹配成功的行填充X值,未匹配行X保留NA
  3. 高效处理:百万级数据下,单次左连接比循环多次连接的效率提升显著,避免重复数据复制和IO操作

结果验证

运行上述代码后,输出结果与期望完全一致:

Fruits    A     B     C    D    X
1   Apple 10.0  1.30    NA   NA   oh
2  Orange  0.2    NA  0.21   NA   NA
3   Grape   NA  0.06 51.00 0.70   NA
4   Grape   NA  0.06 51.00 0.70   NA
5   Grape  1.0  0.06 51.00 0.70   NA
6   Grape   NA  0.06    NA 0.80   NA
7   Berry 11.0 20.00  0.30 0.04   duh
8   Apple   NA  1.10  0.50   NA   NA
9   Apple   NA  1.20  0.50   NA   NA
10  Apple   NA  1.30  0.10   NA   NA
11  Berry   NA    NA  0.30 0.04   NA
12  Berry  1.0    NA  0.90 0.01   NA
13  Apple  1.0  1.30  0.50   NA   NA
14  Apple  1.0  1.30  0.50   NA   NA

内容的提问来源于stack exchange,提问作者M--

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 22:40:25