Как сделать условный фрагмент числовой строки и заменить его другим числовым значением строки? - PullRequest
1 голос
/ 03 октября 2019

Поле «Моя дата» CRT_DT имеет даты, закодированные следующим образом: 1190314, что представляет собой следующую дату 14 марта 2019 года, также 14/03/2019 990201, которая представляет следующую дату 1 февраля 1999 года, также 02/01/2009

Я хотел бы создать поле, которое нормализует это поле даты к обычным датам, поэтому для вышеизложенного оно будет иметь 14/03/2019 и 02/01/1999. Правило состоит в том, что если он начинается с «1», то замените его на «20» и преобразуйте в тип даты, если он начинается с «9», то добавьте «19».

df['CRT_DT_Fix'] = 
np.where(df['CRT_DT'].str.slice(stop=1)='1','20'+df['CRT_DT'].str.slice(start=2),'19'+df['CRT_DT'].str.slice(start=2))

1 Ответ

1 голос
/ 03 октября 2019

Используйте регулярное выражение для замены:

df = pd.DataFrame({
    'CRT_DT': ['1190314', '9990201']
})
s = df['CRT_DT'].str.replace('^1', '20') \
        .str.replace('^9', '19')
df['Date'] = pd.to_datetime(s, format='%Y%m%d')

Результат:

    CRT_DT       Date
0  1190314 2019-03-14
1  9990201 1999-02-01
...