Преобразовать строку даты ГГГГ-ММ-ДД в ГГГГММ в пандах - PullRequest
1 голос
/ 12 апреля 2019

Есть ли в пандах способ преобразовать дату моего столбца в следующем формате «1997-01-31» в «199701», не включая информацию о дне?

Я пробовал решение следующей формы:

df['DATE'] = df['DATE'].apply(lambda x: datetime.strptime(x, '%Y%m'))

но я получаю эту ошибку: 'ValueError: данные времени' 1997-01-31 'не соответствуют формату'% Y% m ''

Вероятно, причина в том, что я не включаю день в формате. Есть ли способ лучше перейти из формата YYYY-MM_DD в YYYYMM в пандах?

Ответы [ 2 ]

5 голосов
/ 12 апреля 2019

Один из способов - преобразовать дату в дату и затем использовать strftime.Просто обратите внимание, что вы теряете функциональность datetime даты

df = pd.DataFrame({'date':['1997-01-31' ]})
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].dt.strftime('%Y%m')


    date
0   199701
1 голос
/ 13 апреля 2019

Может не потребоваться проходить преобразование datetime, если данные достаточно чистые (без некорректных строк, таких как 'foo' или '001231'):

df = pd.DataFrame({'date':['1997-01-31', '1997-03-31', '1997-12-18']})

df['date'] = [''.join(x.split('-')[0:2]) for x in df.date]
#     date
#0  199701
#1  199703
#2  199712

Или, если у вас есть null значения:

df['date'] = df.date.str.replace('-', '').str[0:6]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...