Проблема аналогична тому, что было опубликовано в Объединить фрейм данных на основе индекса R.
Я пытаюсь скопировать один столбец из df2 (огромный df) в df1 (маленький df), но на основе индекса. В питоне это будет:
df1= df1[df.index.isin(df2.index)]
df1['columnx'] = df2['columny']
df1$name <- 0
df1$name[df1$df1['columnx'] == df2$['columny'] <- df2$name
Я попытался заменить столбец «имя» в df1 значениями столбца «имя» df2, соответствующими общему индексу (columnx\columny как столбец индекса), но потерпел неудачу. Я также пытался найти общий индекс
df2.index <- intersect(df1$columnx, df2$columny)
так что df2 будет иметь маленький индекс как в df1 и потом копировать столбец из df2 в df1, но это не работает
Обновлено:
DF1
columnx | col.1 | col.2 |...
a | 12345 | etc. |...
b | | |
ДФ2
columny | col.1 | col.2 | name|
a | 123 | 1234 |abc |
b | | |def |
c | | |ghi |
d | | | |
..
Нужен результат:
Комбинированный ДФ:
columnx | col.1 | col.2 |name
a | 12345 | etc. |abc |
b | | |def |





Вы можете просто использовать match():
df1$name <- df2$name[match(df1$columnx, df2$columny)]
или объединить оба данных по общим столбцам:
dplyr::left_join(df1, df2[c("columny", "name")], by = c("columnx" = "columny"))