У меня есть набор данных, который я чистил, и чтобы очистить его, мне нужно было поместить его в сводную таблицу, чтобы суммировать некоторые данные. Теперь я помещаю его обратно в фрейм данных, чтобы я мог объединить его с некоторыми другими фреймами данных. df1 выглядит примерно так:
Count Region Period ACV PRJ
167 REMAINING US WEST 3/3/2018 5 57
168 REMAINING US WEST 3/31/2018 10 83
169 SAN FRANCISCO 1/13/2018 99 76
170 SAN FRANCISCO 1/20/2018 34 21
df2 выглядит примерно так:
Count MKTcode Region
11 RSMR0 REMAINING US SOUTH
12 RWMR0 REMAINING US WEST
13 SFR00 SAN FRANCISCO
Я пытался объединить их с этим кодом:
df3 = pd.merge(df1, df2, on='Region', how='inner')
но по какой-то причине pandas не интерпретирует столбцы Region как одни и те же данные, и объединение включает данные NaN в столбце MKTcode и, кажется, добавляет df2 к df1, например:
Count Region Period ACV PRJ MKTcode
193 WASHINGTON, D.C. 3/3/2018 36 38 NaN
194 WASHINGTON, D.C. 3/31/2018 12 3 NaN
195 ATLANTA NaN NaN NaN ATMR0
196 BOSTON NaN NaN NaN B2MRN
Я пробовал внутренние и внешние объединения, но реальная проблема заключается в том, что pandas интерпретирует столбец Region каждого фрейма данных как разные элементы.
Столбец MKTcode и столбец Region в df2 содержит только 12 наблюдений, и каждое наблюдение происходит только один раз, тогда как df1 имеет несколько повторяющихся экземпляров в столбце Region (кратно одному и тому же городу). Есть ли способ, где я могу просто создать список из 12 MKT-кодов, которые мне нужны, и выполнить слияние, когда оно совпадает с каждым регионом, который я обозначу? Как матч один ко многим?
Спасибо.