Как объединить серию с фреймом данных с сохранением данных с обеих сторон - PullRequest
1 голос
/ 27 сентября 2019

Python.Как объединить ряд с фреймом данных с сохранением данных с обеих сторон

Используя concat, он дает мне все значения из "g_spend", но не из "grouped_cw", приводит = NaN

t = pd.concat([pd.DataFrame(grouped_cw), g_spend], ignore_index=False)

t.head()

output:

 id Campaign_ID_name  Month  Account  campaignid  campaign_name cost  leads
0  35119190 brand    2019|08  SU    35119190  Brand     $59 NaN


Используя соединение, он дает мне все значения из "grouped_cw", но не из "g_spend", приводит = NaN наоборот ...

t = pd.concat([pd.DataFrame(grouped_cw), g_spend], ignore_index=False)

t.head()

output:

    Account Campaign_ID_nameMonthcampaign_namecampaignidcostid  leads
1076533154  NaN NaN NaN NaN NaN NaN NaN 40.0
143679198   NaN NaN NaN NaN NaN NaN NaN 58.0
169278078   NaN NaN NaN NaN NaN NaN NaN 13.0
1729099155  NaN NaN NaN NaN NaN NaN NaN 8.0
2016404066  NaN NaN NaN NaN NaN NaN NaN 6.0

Желаемый вывод:

Это будетбудьте в порядке, создайте цикл for для подсчета "лидерства" и поместите в новый столбец в фрейме данных g_spend без (join, merge, concat и т. д.)

Что бы это ни работало!:)

   Campaign_ID_name  Month  Account  campaignid  campaign_name  costh     leads
0    35119190   35119190 brand    2019|08  SU   35119190  Brand     $59    391


Вот данные, цель, к которой затем присоединяется кампания

g_spend.to_dict ()

{'id': {0: 35119190,
  1: 64002140,
  2: 272351300,
  3: 4899110,},
 'Campaign_ID_name': {0: 'brand',
  1: '-',
  2: '-',
  3: 'science',
,
 'Month': {0: '2019|08',
  1: '2019|08',
  2: '2019|08',
  3: '2019|08',
},
 'Account': {0: 'a',
  1: 'a',
  2: 'b',
  3: 'c',
},
 'campaignid': {0: 35119190,
  1: 64002140,
  2: 272351300,
  3: 4899110,
 },
 'campaign_name': {0: 'All_Brand',
  1: 'All',
  2: 'All_GBHS',
  3: 'All_Science',
},
 'cost': {0: '$59,399.37 ',
  1: '$12,660.37 ',
  2: '$5,631.96 ',
}}

grouped_cw.to_dict ()

1076533154 ссылается на кампанию 40.0 - количество потенциальных клиентов

{'leads': {'1076533154': 40.0,
  '143679198': 58.0,
  '169278078': 13.0,
  '1729099155': 8.0,
}}

Ответы [ 3 ]

1 голос
/ 27 сентября 2019

Проблема, как видно из команд to_dict(), заключается в том, что g_spend.campaignid являются числовыми, а grouped_cw.index - строковыми.Вы можете, например, преобразовать g_spend.campaignid в строку и объединить:

g_spend.campaignid = g_spend.campaignid.astype(str)

g_spend.merge(grouped_cw, left_on='campaignid', right_index=True)
1 голос
/ 27 сентября 2019

Вы можете использовать pd.merge() для этой цели:

merged_df = pd.merge(pd.DataFrame(grouped_cw), g_spend, on="campaignid", how='outer')
0 голосов
/ 27 сентября 2019

g_spend.campaignid = g_spend.campaignid.astype (str)

g_spend.merge (grouped_cw, left_on = 'campaignid', right_index = True)

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