如何在Python中的同一组列中附加多个唯一元素?

时间:2019-02-14 00:11:08

标签: python r pandas dataframe append

我正在尝试从数据框中的一列中获取唯一的标识符/键,并将其附加到另一数据框中的两列中的SAME元素集中。这两个数据帧如下:

         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中,还有一些日期可能会持续到八月,但为了简洁起见,我没有将它们包括在内。我想从df1中获取每个唯一的Geogkey,并将它们附加到df2,因此特定日期和展示次数的每一行都与geogkey相匹配。 df2中的日期和印象集将连续向下重复数据框,每个组合对应一个唯一的geogkey-每次也会重复。所以最终的数据帧看起来像这样:

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 :(得分:0)

如果我错了,请纠正我,但是看来您正在尝试使用“日期”和“印象”的每个组合重复每个键。这样的事情会起作用。

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中的行是唯一的。