Почему сумма моих данных изменяется при слиянии? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть два кадра данных, sales и plan, как указано ниже:

                                  units
  retailer  product  date 

  1         1        2018-12-30   355
  1         1        2017-12-31   312
  1         1        2018-01-01   370
  ...


                                  plan_units
  retailer  product  date
  1         1        2018-01-01   360
  1         1        2018-01-02   380
  1         1        2018-01-03   330
  ...

[retailer, product, date] - это индекс.

Перед объединением sales['units'].sum() составляет 123 456.Однако:

pd.merge(sales, plan, left_index=True, right_index=True, how='outer')['units'].sum() 

равно 257,379 , т. Е. Больше, чем я имел раньше.

Индексы двух кадров данных не совпадают, следовательно, how='outer'.Однако, как я получаю больше в объединенном результате?

1 Ответ

0 голосов
/ 12 июня 2018

Проблема должна состоять в продажах, а план содержит дублированный индекс, который заставляет объединение создавать несколько строк для каждой строки совпадения

Например, даже при использовании concat у вас будет та же проблема, так как по умолчанию outer.

pd.concat([sales,plan],1)['units'].sum()

Пример:

df1=pd.DataFrame({'key':[1,1,2],'val':[1,1,1]})
df2=pd.DataFrame({'key':[1,1,2],'val':[1,1,1]})
df1.merge(df2,on='key')
Out[291]: 
   key  val_x  val_y
0    1      1      1
1    1      1      1
2    1      1      1
3    1      1      1
4    2      1      1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...