有没有办法用第二个 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
似乎没有做我想做的事。我也尝试过融合到没有运气的桌子上。
任何方向的帮助将不胜感激。谢谢
【问题讨论】:
您需要使用merge
或dplyr
的left_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 中的一列?的主要内容,如果未能解决你的问题,请参考以下文章
更快地遍历一个 DataFrame 的行以将列添加到第二个 DataFrame
Pandas:如何在第二个 DataFrame 的另一列中查找子字符串位置