Панды Изменить формат даты столбца - PullRequest
0 голосов
/ 11 мая 2018

У меня есть столбец в pandas dataframe следующим образом:

0    2018-04-06
1    2018-04-06
2    2018-04-09
3    2018-04-19
4    2018-04-19
5    2018-04-17

Я хочу преобразовать этот столбец в yyyy / mm / dd, для которого я написал следующее:

def change_date_format(x):
    if x != 'nan' and x != '' and x != ' ' and x != 0:
        x = parse(x, dayfirst=True).strftime("%Y-%m-%d")
        return x
    else:
        return ''

read4['Column Name'] = read4['Column Name'].apply(lambda x : change_date_format(x)  )

Но он конвертируется следующим образом:

2018-06-04
2018-06-04
2018-09-04
2018-04-19
2018-04-19
2018-04-17

, что в идеале должно быть:

2018-04-06
2018-04-06
2018-04-09
2018-04-19
2018-04-19
2018-04-17

Как заставить его работать, как описано выше.По сути, он также должен учитывать ввод и зависит от того, как он должен работать.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Может быть, вам нужно установить флаг dayfirst на False?

x = parse(x, dayfirst=False).strftime("%Y-%m-%d")
0 голосов
/ 11 мая 2018

Я думаю, что нужно to_datetime с параметром errors='coerce' для преобразования не разбираемых значений в NaT, затем strftime и последнее replace:

read4['Column Name'] = (pd.to_datetime(read4['Column Name'], errors='coerce')
                          .dt.strftime("%Y-%m-%d")
                          .replace('NaT', ''))
  Column Name
0  2018-04-06
1  2018-04-06
2  2018-04-09
3  2018-04-19
4  2018-04-19
5  2018-04-17
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...