Как сопоставить значения, используя 2 условия, когда есть дубликаты - PullRequest
0 голосов
/ 28 октября 2019

Как сделать атрибуцию стоимости на основе 2 условий (месяц и идентификатор).

Проблема в том, что идентификатор повторяется для каждого месяца, но стоимость различна для каждого месяца

, так какчтобы сопоставить эти значения из таблицы reff с основным кадром данных с помощью 2 условий (идентификатор и месяц)

В целом за месяц есть дубликаты, но не дубликаты.

Образец моих данных

cw=

  adgroup    Date    
  1001   2018-08-01
  1001   2019-03-01
  1003   2018-03-01
  1002   2018-03-01
  1001   2018-05-01
  1003   2018-08-01
  1001   2019-12-12
  1002   2019-03-01
  1001   2019-08-01

Таблица реффов

f_spend=


    adgroup   Month        cost  

    1001    2019/08     101,1
    1002    2019/08      70,1
    1003    2019/03    4221,1
    1001    2018/05     101,1
    1002    2018/03      50,1
    1003    2018/08    8221,1
    1001    2019/08    5401,1
    1002    2019/08      50,1
    1003    2019/12    9221,1
    1001    2019/08     101,1
    1002    2019/08      50,1
    1003    2019/12    6221,1

Что я сделал

# grouping by the main data( facebook data) by id

cw["id"].replace(to_replace=[None], value=np.nan, inplace=True)

grouped_cw = cw.groupby(["adgroup"]).sum()
grouped_cw = pd.DataFrame(grouped_cw)



# merging two tables together

f_spend = f_spend.merge(grouped_cw, left_on='adgroup', right_index=True)
f_spend["cost"] = pd.to_numeric(f_spend["cost"])



# mapping values to original data
cw['spent'] = cw['adgroup'].map(f_spend.set_index('adgroup')['cost'])


Не работает, потому что у меня есть дубликаты, но я не должен удалять их

1 Ответ

1 голос
/ 29 октября 2019

Похоже, что для этой части вашего кода:

# merging two tables together
f_spend = f_spend.merge(grouped_cw, left_on='adgroup', right_index=True)
f_spend["cost"] = pd.to_numeric(f_spend["cost"])

# mapping values to original data
cw['spent'] = cw['adgroup'].map(f_spend.set_index('adgroup')['cost'])

Вы не должны использовать группу объявлений, вы должны использовать ваши столбцы Месяц / Дата для выполнения объединения, потому что дата является частьюваших данных, которые являются уникальными для каждого события.

...