Вычесть 1 год из дат в формате ГГГГММ - PullRequest
1 голос
/ 17 июня 2019

У меня есть строка панд, которая на самом деле представляет собой дату в формате ГГГМ:

date_have=201903

Что я хочу, чтобы преобразовать в дату 12 месяцев назад:

date_want=201803

Как я могу это сделать? Тип данных date_want должен быть числовым.

Ответы [ 2 ]

2 голосов
/ 17 июня 2019

Вам понадобится pd.offsets.DateOffset здесь, потому что временная дельта "1 год" не является фиксированным количеством времени.

s = pd.Series([201903])

0    201903
dtype: int64

# convert to datetime
dates = pd.to_datetime(s.map(str), format='%Y%m')
# subtract a year and convert back to YYYYMM format
(dates - pd.offsets.DateOffset(years=1)).dt.strftime('%Y%m').astype(int)

0    201803
dtype: int64

Как скаляр, решение почти такое же, только без аксессора .dt.

date_have = 201903
date_want = (
    pd.to_datetime(str(date_have), format='%Y%m') - pd.offsets.DateOffset(years=1))

int(date_want.strftime('%Y%m'))
# 201803
0 голосов
/ 17 июня 2019

Это кажется слишком хорошим, чтобы быть правдой:

date_want = pd.to_numeric(date_have) - 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...