#python #pandas
#python #pandas
Вопрос:
У меня есть 2 фрейма данных, которые я хочу объединить. Однако названия строк немного отличаются друг от друга. Возможно ли объединить их с помощью pandas?
**df1**
Date Campaign Units sold Sales
11/07/2020 AMZ ABCDEFG 1 $10
12/07/2020 AMZ ABCDEFG 2 $20
13/07/2020 AMZ ABCDEFG 3 $30
**df2**
Date Campaign Clicks Spend
11/07/2020 GA ABCDEFG 10 $5
12/07/2020 GA ABCDEFG 15 $6
13/07/2020 GA ABCDEFG 20 $7
**Desired output**
Date Campaign Clicks Units sold Spend Sales
11/07/2020 ABCDEFG 10 1 $5 $10
12/07/2020 ABCDEFG 15 2 $6 $20
13/07/2020 ABCDEFG 20 3 $7 $30
Ответ №1:
Возможно, вам захочется немного почистить выходные данные, но это похоже на то, что вам нужно.
df1["Campaign_id"] = df1["Campaign"].str.split(expand=True)[1]
df2["Campaign_id"] = df2["Campaign"].str.split(expand=True)[1]
df = df1.merge(df2, on=["Campaign_id", "Date"], how="outer")
print(df)
Date Campaign_x Units sold Sales Campaign_id Campaign_y Clicks
0 11/07/2020 AMZ ABCDEFG 1 $10 ABCDEFG GA ABCDEFG 10
1 12/07/2020 AMZ ABCDEFG 2 $20 ABCDEFG GA ABCDEFG 15
2 13/07/2020 AMZ ABCDEFG 3 $30 ABCDEFG GA ABCDEFG 20
Spend
0 $5
1 $6
2 $7
Комментарии:
1. Я использовал это и получил сообщение об ошибке «Ошибка значения: неверное количество переданных элементов 13, размещение подразумевает 1». Можете ли вы помочь мне понять проблему и также помочь мне ее решить? Спасибо
Ответ №2:
Чтобы получить ожидаемый результат :
df3 = df1.merge(df2[['Date','Clicks','Spend']],on = 'Date')
Затем стандартизируйте Campaign
:
df3["Campaign"].str.split(expand=True)[1]