Pandas Добавить строки на основе существующего значения даты за последние 2 дня - PullRequest
1 голос
/ 03 августа 2020

У меня есть pandas фрейм данных:

Name     Date
Bob      2020-05-17
Alice    2020-04-01

Ниже приводится ожидаемый результат: для каждой группы имен я хотел бы сохранить исходную строку с еще 2 строками за последние 2 дня ' значение в Date

Name     Date
Bob      2020-05-17
Bob      2020-05-16
Bob      2020-05-15
Alice    2020-04-01
Alice    2020-03-31
Alice    2020-03-30

Заранее спасибо!

1 Ответ

1 голос
/ 03 августа 2020

Используйте pd.date_range в понимании списка для assign встроенных дат, затем DataFrame.explode:

df = (df.assign(Date=[pd.date_range(end=e, periods=3, freq='D')
                for e in df['Date']])
      .explode('Date'))

[выход]

    Name         Date
0    Bob   2020-05-15
0    Bob   2020-05-16
0    Bob   2020-05-17
1  Alice   2020-03-30
1  Alice   2020-03-31
1  Alice   2020-04-01

Если важна дата заказа, вам может потребоваться дополнительный метод sort_values, за которым следует sort_index:

(df.assign(Date=[pd.date_range(end=e, periods=3, freq='D')
                for e in df['Date']])
      .explode('Date')
      .sort_values(['Date'], ascending=False)
      .sort_index())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...