我有包含在单个列中的日期和时间的数据。格式混合了日期和时间。这意味着,同一列中的某些行中的日期和时间。我创建了一个简单的示例来说明我的问题。以下是示例数据帧:
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。 预期输出如下:
Date1和Time是我要创建的新列。
有人可以告诉我该怎么做吗? 预先感谢。
致谢
Zep。
答案 0 :(得分:4)
单向
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
答案 1 :(得分:3)
使用:
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