用列不匹配的另一个数据框中的数据填充数据框[关闭]

Posted

技术标签:

【中文标题】用列不匹配的另一个数据框中的数据填充数据框[关闭]【英文标题】:Fill data frame with data from another data frame where columns do not match [closed] 【发布时间】:2022-01-21 06:05:47 【问题描述】:

我正在为看似简单的任务而苦苦挣扎。我有一个空白数据框,其列如“A”所示。我有一个数据框,其列如 B 所示。B 的列比 A 少。我需要将两者合并,因此文件 A 包含 B 中的所有数据。但是,文件 A 的列顺序不能改变。如果 B 中没有匹配的列,则 A 中的列必须保留但为空。我已经尝试了很多方法,但都做得很短。列名也需要映射在一起。比如B的“Cust No”需要去A的“ID”,B的“客户名”必须去A的“姓名”。我可以直接改B的名字,然后合并两个文件,然后使用 Index 重新排列 A 中的列名,但这不起作用并且很麻烦。有什么建议吗?

【问题讨论】:

请在reproducible example 或minimal reproducible example 中输入示例输入和您的预期输出。这是创建、测试和验证可能的解决方案所必需的。 第一步肯定是把B中的列名改成匹配A。所以names(B)[1] 【参考方案1】:

使用tidyverse 中的dplyr,您应该能够做到这一点:

library(tidyverse)
AB <-
   B %>%
   rename(ID = `Cust No`, Name = `Customer Name`) %>%
   full_join(A, ., by = "ID")

rename 将允许您手动更改 B 中的名称,以便它们以 new_name = old_name 的形式匹配 Afull_join 将保留两个数据帧中的所有行,并将A 作为第一个参数,B(表示为.)作为第二个参数,将首先将列放在 A 中。 by = 确保您与 ID 列匹配。

【讨论】:

以上是关于用列不匹配的另一个数据框中的数据填充数据框[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 根据另一个数据框中的匹配列填充新的数据框列

熊猫:用列值匹配的列表填充新列

用列填充组合框

Pandas:如果特定列不包含特定文本,则删除数据框中的行

提取特定单元格的值并将其填充以代替 pyspark 数据框中的 NA 值

如何将数据框中的连接值插入到 Pyspark 中的另一个数据框中?