Как добавить несколько уникальных элементов в один и тот же набор столбцов в Python? - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь взять уникальный идентификатор / ключ из одного столбца в фрейме данных и добавить его в другой фрейм данных в ТО ЖЕ набор элементов в обоих столбцах.Оба фрейма данных имеют следующий вид:

         df1                              df2
Geogkey    Brand  Week               date       Impressions
TMZ43434   x      6/16/18           6/14/18       798798
KRO36783   y      6/16/18           6/21/18       562314
....                                6/28/18       462534
n

В df2 есть еще несколько дат, предшествующих августу, но я для краткости не включил их.Я хочу взять КАЖДОГО уникального Geogkey из df1 и добавить его в df2, чтобы каждая строка конкретной даты и показов совпадала с geogkey.Набор дат и показов в df2 будет непрерывно повторяться вниз по кадру данных с каждой комбинацией, соответствующей уникальному геоключу, который также будет дублироваться каждый раз.Итак, итоговый фрейм данных будет выглядеть следующим образом:

Geogkey    date    Impressions
TMZ43434  6/14/18   798798
TMZ43434  6/21/18   562314
TMZ43434  6/28/18   462534
KRO36783  6/14/18   798798
KRO36783  6/21/18   562314
KRO36783  6/28/18   462534

Это будет непрерывно повторяться для каждой геогонки.Пока что у меня есть код:

empty <- data.frame(df2$date, df2$impressions)

#creates a new data frame with unique geogkeys
geogname <- unique(data.frame(df1$GEOGKEY))

#create some function that will index each unique geogkey and make a new 
column for df2 with that name (e.g. df2$geogkey <- some function)

new_df <- rbind(empty, df2)
#this should theoretically append all the geogkeys to the dates and 
impressions

Нужно ли мне написать цикл for для этого?Я застрял и не знаю, как поступить.Я пытаюсь сделать это и в Пандах.

1 Ответ

0 голосов
/ 14 февраля 2019

поправьте меня, если я ошибаюсь, но похоже, что вы пытаетесь повторить каждую клавишу с каждой комбинацией «дата» и «показ».Примерно так будет работать.

df <- data.frame()
for(i in unique(df1$GEOKEY){
  for(j in 1:nrow(df2)){

       df <- rbind(df, 
                   data.frame('key' = i, 'date' = df2[j,1], 'impressions' =  df2[j,2]))

   }
}

С большим фреймом данных это немного громоздкое решение.Также я предположил, что строки в df2 являются уникальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...