有没有办法用第二个 Dataframe 中的一列填充一个 Dataframe 中的一列?

Posted

技术标签:

【中文标题】有没有办法用第二个 Dataframe 中的一列填充一个 Dataframe 中的一列?【英文标题】:Is there a way to fill a column in one Dataframe with a column from a second Dataframe? 【发布时间】:2021-12-29 11:05:04 【问题描述】:

目标:从第二个 DF 的值中填充 1 个 Dataframe 中列的值。

我有一个包含以下内容的数据框:

DF1

ID ValueA Dates
Aaaaaa Na 02/13
Bbbbbb Na 03/13
Cccccc Na 04/13
Aaaaaa Na 03/14

DF2

ID ValueA Dates
Aaaaaa 12 02/13
Bbbbbb 19 03/13
Aaaaaa 15 03/14
Cccccc 13 04/13

我想将 DF2 中的 ValueA 放入 DF1 的 valueA 中,每个条目的匹配 ID 和日期不会导致偏移,因为它们的顺序可能不同,这是我目前遇到的问题。

DF1$ValueA

似乎没有做我想做的事。我也尝试过融合到没有运气的桌子上。

任何方向的帮助将不胜感激。谢谢

【问题讨论】:

您需要使用mergedplyrleft_join加入表格 如果我在两个 DF 中的列数不同怎么办?感谢您的回复和时间! 它仍然可以工作。尽管根据您想要对数据执行的具体操作,您可以选择 left_join、right_join、full_join 或 inner_join 【参考方案1】:

尝试使用dplyr rows_update -

DF1 <- dplyr::rows_update(DF1, DF2, by = c('ID', 'Dates'))
DF1

#      ID ValueA Dates
#1 Aaaaaa     12 02/13
#2 Bbbbbb     19 03/13
#3 Cccccc     13 04/13
#4 Aaaaaa     15 03/14

数据

如果您在reproducible format 中提供数据会更容易提供帮助

DF1 <- structure(list(ID = c("Aaaaaa", "Bbbbbb", "Cccccc", "Aaaaaa"), 
    ValueA = c(NA_character_, NA_character_, NA_character_, NA_character_
    ), Dates = c("02/13", "03/13", "04/13", "03/14")), 
   row.names = c(NA, -4L), class = "data.frame")

DF2 <- structure(list(ID = c("Aaaaaa", "Bbbbbb", "Aaaaaa", "Cccccc"), 
    ValueA = c(12L, 19L, 15L, 13L), Dates = c("02/13", "03/13", 
    "03/14", "04/13")), row.names = c(NA, -4L), class = "data.frame")

【讨论】:

关于数据格式的问题,非常抱歉,感谢您的回复!如果 DF1 的列/变量比 DF2 多,这是否也有效? 我试了代码,一直报错:x key values are not unique?你知道这可能是什么原因吗?

以上是关于有没有办法用第二个 Dataframe 中的一列填充一个 Dataframe 中的一列?的主要内容,如果未能解决你的问题,请参考以下文章

EXCEL在第二列对应第一列填入的内容返回相对应的数据

更快地遍历一个 DataFrame 的行以将列添加到第二个 DataFrame

Pandas:如何在第二个 DataFrame 的另一列中查找子字符串位置

用第一个值减去熊猫数据框中的一列

有效地将值从一列替换到另一列 Pandas DataFrame

更好的方法来选择第一个表中的所有列,并且只选择第二个表中的一列。