Как добавить месяцы и дни в набор данных python? - PullRequest
0 голосов
/ 17 июня 2020

Итак, у меня есть набор данных со столбцом «Время». Время - это всего лишь годы, и я хотел бы добавить случайный месяц и дату в столбец «Время», не изменяя свой набор данных в каталоге. Таким образом, формат должен выглядеть как 12.12.1995.

Как я могу его получить?

    Time   
0   1995    
1   1996    
2   1997    
3   1998    
4   1999    

Ответы [ 3 ]

1 голос
/ 17 июня 2020

Я думаю, вы, если добавите месяцы и дни отдельно, должны возникнуть проблемы с последними днями месяцев, например, если дней 30, если не удалось в феврале.

Поэтому я предлагаю добавлять только дни, например:

df['Time'] = (pd.to_datetime(df.Time, format='%Y') + 
              pd.to_timedelta(np.random.randint(365, size=len(df)), unit='d'))
print (df)
        Time
0 1995-06-02
1 1996-01-02
2 1997-05-06
3 1998-12-20
4 1999-11-22
0 голосов
/ 17 июня 2020

Другой вариант с некрасивым пониманием списка:

df['Time'] = [(pd.Timestamp(year=i, month=np.random.randint(1,13), day=1)
              + pd.Timedelta(days = np.random.randint(30))).replace(year=i)
              for i in df['Time']]
0 голосов
/ 17 июня 2020

Определите следующую функцию для создания даты в заданном году, сдвинутой на случайное количество месяцев и дней:

def yearToRandomDay(year):
    return pd.to_datetime(str(year) + '-01-01') + pd.DateOffset(
        months=np.random.randint(11), days=np.random.randint(30))

Затем примените ее, перезаписав время столбец:

df.time = df.time.apply(yearToRandomDay)

Для ваших образцов данных и np.random.seed(0) я получил:

        time
0 1995-06-01
1 1996-04-28
2 1997-04-08
3 1998-10-20
4 1999-06-19
...