Назначение последовательностей дат группам панд - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть датафрейм в пандах со столбцами магазинов и идентификаторов предметов.Я хотел бы назначить каждой паре (shop, item_id) диапазон данных за месяц.например, если магазин называется «Игрушка» и item_id «мяч», у меня есть что-то вроде этого:

  shop item_id
0  Toy    ball
1  Toy    book

И я хотел бы иметь что-то вроде этого:

  shop item_id      date
0  Toy    ball  1-1-2015
1  Toy    ball  1-2-2015
2  Toy    ball  1-3-2015
3  Toy    ball  1-4-2015
4  Toy    book  1-1-2015
5  Toy    book  1-2-2015
6  Toy    book  1-3-2015
7  Toy    book  1-4-2015

Как я могу достичь этого с пандами?

1 Ответ

0 голосов
/ 15 декабря 2018

Дано

df    
  shop item_id
0  Toy    ball
1  Toy    book

И

n = 5 # Number of days.

Начните с повторения каждой строки DataFrame по количеству дней.

df = pd.DataFrame(df.values.repeat(n, axis=0), columns=df.columns)

Теперь давайте используемgroupby, cumcount и некоторая арифметика timedelta с pd.DateOffset:

days = pd.Series([
    pd.DateOffset(days=x) for x in df.groupby(['shop', 'item_id']).cumcount()
])
df['date'] = days + pd.to_datetime('2015-1-1')
print(df)

  shop item_id       date
0  Toy    ball 2015-01-01
1  Toy    ball 2015-01-02
2  Toy    ball 2015-01-03
3  Toy    ball 2015-01-04
4  Toy    ball 2015-01-05
5  Toy    book 2015-01-01
6  Toy    book 2015-01-02
7  Toy    book 2015-01-03
8  Toy    book 2015-01-04
9  Toy    book 2015-01-05
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...