Страницы

Поиск по вопросам

суббота, 6 июля 2019 г.

Как собрать дату из двух серий в Pandas?

UPD: Как собрать дату из двух серий (месяц, день)? Несмотря на простоту вопроса и ознокомления с документацией к pandas, решения не нашёл.
Пример серий:
Month Year 0 February 2017 1 July 2017 2 November 2017 3 September 2017 4 August 2017 5 March 2017 6 March 2017 7 August 2017 8 March 2017 9 March 2017 10 August 2017
В результате требуется получить серию Period типа February 2017. Тип данных нужен дата.


Ответ

Чтобы создать новый столбец с типом datetime
In [65]: df['Date'] = pd.to_datetime(df.astype(str).add(' ').sum(1))
In [66]: df Out[66]: Month Year Date 0 February 2017 2017-02-01 1 July 2017 2017-07-01 2 November 2017 2017-11-01 3 September 2017 2017-09-01 4 August 2017 2017-08-01 5 March 2017 2017-03-01 6 March 2017 2017-03-01 7 August 2017 2017-08-01 8 March 2017 2017-03-01 9 March 2017 2017-03-01 10 August 2017 2017-08-01
In [67]: df.dtypes Out[67]: Month object Year int64 Date datetime64[ns] dtype: object
Чтобы создать новый столбец с типом Period
In [69]: df['Period'] = pd.PeriodIndex(pd.to_datetime(df.astype(str).add(' ').sum(1)), freq='M')
In [70]: df Out[70]: Month Year Period 0 February 2017 2017-02 1 July 2017 2017-07 2 November 2017 2017-11 3 September 2017 2017-09 4 August 2017 2017-08 5 March 2017 2017-03 6 March 2017 2017-03 7 August 2017 2017-08 8 March 2017 2017-03 9 March 2017 2017-03 10 August 2017 2017-08
In [71]: df.dtypes Out[71]: Month object Year int64 Period object dtype: object
In [72]: df.Period.dt.days_in_month Out[72]: 0 28 1 31 2 30 3 30 4 31 5 31 6 31 7 31 8 31 9 31 10 31 Name: Period, dtype: int64

Комментариев нет:

Отправить комментарий