Моя цель - добавить строки в pandas, чтобы заменить отсутствующие данные предыдущими данными и одновременно выполнить повторную выборку дат. Мои данные содержат разные идентификаторы продуктов, и я должен каждый раз выполнять groupBy, потому что я должен сохранять данные временного ряда для каждого идентификатора продукта. Пример: это мой фрейм данных:
productId popularity converted_timestamp date
0 1 5 2015-12-01 2015-12-01
1 1 8 2015-12-02 2015-12-02
2 1 6 2015-12-04 2015-12-04
3 1 9 2015-12-07 2015-12-07
4 2 5 2015-12-01 2015-12-01
5 2 10 2015-12-03 2015-12-03
6 2 6 2015-12-04 2015-12-04
7 2 12 2015-12-07 2015-12-07
8 2 11 2015-12-09 2015-12-09
И это то, что я хочу:
date productId popularity converted_timestamp
0 2015-12-01 1 5 2015-12-01
1 2015-12-02 1 8 2015-12-02
2 2015-12-03 1 8 2015-12-02
3 2015-12-04 1 6 2015-12-04
4 2015-12-05 1 6 2015-12-04
5 2015-12-06 1 6 2015-12-04
6 2015-12-07 1 9 2015-12-07
7 2015-12-01 2 5 2015-12-01
8 2015-12-02 2 5 2015-12-01
9 2015-12-03 2 10 2015-12-03
10 2015-12-04 2 6 2015-12-04
11 2015-12-05 2 6 2015-12-04
12 2015-12-06 2 6 2015-12-04
13 2015-12-07 2 12 2015-12-07
14 2015-12-08 2 12 2015-12-07
15 2015-12-09 2 11 2015-12-09
И это мой код:
df.set_index('date').groupby('productId', group_keys=False).apply(lambda df: df.resample('D').ffill()).reset_index()
Это работает, и это прекрасно! Итак, мои новые данные выглядят так:
productId popularity converted_timestamp date
11960909 15620743.0 526888.0 2016-01-11 2016-01-11
11960910 15620743.0 487450.0 2016-02-26 2016-02-26
11960911 15620743.0 487450.0 2016-02-26 2016-02-26
12355593 17175984.0 751990.0 2016-01-28 2016-01-28
12355594 17175984.0 584549.0 2016-01-26 2016-01-26
12355595 17175984.0 587289.0 2016-01-26 2016-01-26
12355596 17175984.0 574454.0 2016-01-26 2016-01-26
12355597 17175984.0 570663.0 2016-01-26 2016-01-26
12355598 17175984.0 566914.0 2016-01-26 2016-01-26
12355599 17175984.0 591241.0 2016-01-26 2016-01-26
12355600 17175984.0 590637.0 2016-01-26 2016-01-26
12355601 17175984.0 556794.0 2016-01-27 2016-01-27
12355602 17175984.0 512403.0 2016-02-10 2016-02-10
12355603 17175984.0 510561.0 2016-02-10 2016-02-10
12355604 17175984.0 513907.0 2016-02-10 2016-02-10
12355605 17175984.0 512403.0 2016-02-10 2016-02-10
12355606 17175984.0 511038.0 2016-02-10 2016-02-10
12355607 17175984.0 510561.0 2016-02-10 2016-02-10
12355608 17175984.0 554359.0 2016-01-27 2016-01-27
17028384 16013607.0 563480.0 2016-02-21 2016-02-21
17028385 16013607.0 563480.0 2016-02-21 2016-02-21
17028386 16013607.0 563480.0 2016-02-21 2016-02-21
17028387 16013607.0 563480.0 2016-02-21 2016-02-21
17028388 16013607.0 563480.0 2016-02-21 2016-02-21
17028389 16013607.0 563480.0 2016-02-21 2016-02-21
17028390 16013607.0 563480.0 2016-02-21 2016-02-21
17028391 16013607.0 563480.0 2016-02-21 2016-02-21
17028392 16013607.0 546230.0 2016-02-14 2016-02-14
17028393 16013607.0 546230.0 2016-02-14 2016-02-14
17028394 16013607.0 546230.0 2016-02-14 2016-02-14
17028395 16013607.0 546230.0 2016-02-14 2016-02-14
17028396 16013607.0 546230.0 2016-02-14 2016-02-14
17028397 16013607.0 546230.0 2016-02-14 2016-02-14
17028398 16013607.0 546230.0 2016-02-14 2016-02-14
17028399 16013607.0 546230.0 2016-02-14 2016-02-14
Тот же код выдает следующее сообщение об ошибке: ValueError: невозможно переиндексировать неуникальный индекс с помощью метода или ограничения.
Почему ? Помощь ? Спасибо.
group
у вас есть дубликатыdates
. - person jezrael   schedule 20.06.20162015-12-01
на2015-12-02
- person jezrael   schedule 20.06.2016