Формат даты и времени смешивается и разделяется на два столбца и меняет формат даты - PullRequest
2 голосов
/ 19 апреля 2019

У меня есть данные, которые содержат дату и время в одном столбце.Формат состоит из даты и времени.Это означает, что дата в некоторых строках и время в некоторых строках в одном и том же столбце.Я создал простой пример, чтобы проиллюстрировать мою проблему.Ниже приведен пример фрейма данных:

data = pd.DataFrame ()
data ['Date'] = ['Saturday 20th April 2019','12:30:00','12:30:00','15:00:00']
data ['Name'] = ['A','B','C','D']

Я хочу сделать две вещи.(1) Я хочу разделить дату и время на два разных столбца.(2) Я хочу изменить формат даты на 20-04-2019.Ожидаемый результат будет следующим:

enter image description here

Дата1 и Время - это новые столбцы, которые я хотел создать.

Может кто-нибудь посоветоватьмне как это сделать?Заранее спасибо.

С уважением

Zep.

Ответы [ 2 ]

4 голосов
/ 19 апреля 2019

В одну сторону

data['Date1']=pd.to_datetime(data.Date)
data['Time']=data['Date1'].dt.time
s=data.Date.str.contains(':')
data['Date1']=data['Date1'].mask(s).ffill()
data['Time']=data['Time'].where(s).bfill()
data
Out[1002]: 
                       Date Name      Date1      Time
0  Saturday 20th April 2019    A 2019-04-20  12:30:00
1                  12:30:00    B 2019-04-20  12:30:00
2                  12:30:00    C 2019-04-20  12:30:00
3                  15:00:00    D 2019-04-20  15:00:00
3 голосов
/ 19 апреля 2019

Использование:

data['Date1'] = data['Date'].str.split(n=1).str[1].ffill()
data['Time1'] = data['Date'].str.extract('(\d+:\d+:\d+)', expand=False).bfill()

print (data)

                       Date Name            Date1     Time1
0  Saturday 20th April 2019    A  20th April 2019  12:30:00
1                  12:30:00    B  20th April 2019  12:30:00
2                  12:30:00    C  20th April 2019  12:30:00
3                  15:00:00    D  20th April 2019  15:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...