Как разбить одну строку на несколько и применить дату и время к столбцу данных? - PullRequest
0 голосов
/ 23 января 2019

У меня есть один кадр данных, который выглядит следующим образом:

                   Date_1                Date_2
0                5 Dec 2017                5 Dec 2017
1               14 Dec 2017               14 Dec 2017
2               15 Dec 2017               15 Dec 2017
3   18 Dec 2017 21 Dec 2017   18 Dec 2017 21 Dec 2017
4              22 Dec 2017               22 Dec 2017

Условия, которые необходимо проверить:

  1. Хотите проверить, содержит ли какая-либо строка две даты или нет, как 3-я строка.Если есть, разделите их на две отдельные строки.
  2. Примените дату и время к обоим столбцам.

Я пытаюсь выполнить ту же операцию, как показано ниже:

df['Date_1'] = pd.to_datetime(df['Date_1'], format='%d %b %Y')

Но получается ошибка ниже:

ValueError: unconverted data remains:

Ожидаемый результат:

                   Date_1                Date_2
0                5 Dec 2017               5 Dec 2017
1               14 Dec 2017               14 Dec 2017
2               15 Dec 2017               15 Dec 2017
3               18 Dec 2017               18 Dec 2017 
4               21 Dec 2017               21 Dec 2017
5               22 Dec 2017                22 Dec 2017

1 Ответ

0 голосов
/ 23 января 2019

После использования регулярного выражения с findall получите дату, когда ваша проблема станет вашей проблемой unnesting

s=df.apply(lambda x : x.str.findall(r'((?:\d{,2}\s)?(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]*(?:-|\.|\s|,)\s?\d{,2}[a-z]*(?:-|,|\s)?\s?\d{,4})'))

unnesting(s,['Date_1','Date_2']).apply(pd.to_datetime)
Out[82]: 
      Date_1     Date_2
0 2017-12-05 2017-12-05
1 2017-12-14 2017-12-14
2 2017-12-15 2017-12-15
3 2017-12-18 2017-12-18
3 2017-12-21 2017-12-21
4 2017-12-22 2017-12-22
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...