Генерация данных даты для кадра данных - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть фрейм данных с 30 записями на дату_1 (с 01.09.2009 по 30.09.2009). Я хочу создать другой фрейм данных, такой что:

  1. каждая дата_1, у нас есть 29 записей, и каждая дата_1 соответствует дате_2, так что дата_2 находится в диапазоне (дата_1 - 30 - дата_1 - 1).

Например, 01/09/2019 будет фактически соответствовать дате_2 из (02/08/2019 - 31/08/2019) 02/09/2019 будет соответствовать дате_2 из (03/08)/ 2019 - 01.09.2009).

и т. Д.

Окончательные столбцы набора данных будут выглядеть следующим образом:

Date_1 Date_2

Может ли кто-нибудь помочь с тем же.

РЕДАКТИРОВАТЬ

Ожидаемый результат:

Date_1  Date_2
01/09/2019  02/08/2019
01/09/2019  03/08/2019
01/09/2019  04/08/2019
01/09/2019  05/08/2019
.
.
.
.
01/09/2019  29/08/2019
01/09/2019  30/08/2019
02/09/2019  03/08/2019
.
.
.
02/09/2019  31/08/2019

Спасибо

1 Ответ

1 голос
/ 07 ноября 2019

Дает ли этот код ожидаемый результат?

import pandas as pd
import numpy as np

df = pd.DataFrame({'Date_1' : pd.period_range('2019/09/01', '2019/09/30', freq='D').repeat(30)})

df['Date_2'] = np.tile(np.arange(30, 0, -1), df.Date_1.unique().size)

df.Date_2 = pd.to_timedelta(df.Date_2, 'D')
df.Date_2 = df.Date_1 - df.Date_2

print(df)

Первый ответ:

"Вот способ сделать это (не совсем тот формат, который вы запросили для" Date_2 "), но это идея):

import pandas as pd
import numpy as np

df = pd.DataFrame({'Date_1' : pd.period_range('2019/09/01', '2019/09/30', freq='D')})

df['Date_2_1'] = df.Date_1 - np.timedelta64(30, 'D') # First date for Date_2
df['Date_2_2'] = df.Date_1 - np.timedelta64(1, 'D') # Second date for Date_2

print(df)

"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...