Python 分析数据帧中的日期/时间字符串
我有以下一系列日期/时间:Python 分析数据帧中的日期/时间字符串,python,pandas,Python,Pandas,我有以下一系列日期/时间: pd.DataFrame({"GMT":["13 Feb 20089:30 AM", "22 Apr 20098:30 AM", "14 Jul 20108:30 AM", "01 Jan 20118:30 AM"]}) GMT 13 Feb 20089:30 AM 22 Apr 20098:30 AM 14 Jul 20108:30 AM 01 Jan 20118:30 AM 我想将日期和时间部分分成
pd.DataFrame({"GMT":["13 Feb 20089:30 AM", "22 Apr 20098:30 AM",
"14 Jul 20108:30 AM", "01 Jan 20118:30 AM"]})
GMT
13 Feb 20089:30 AM
22 Apr 20098:30 AM
14 Jul 20108:30 AM
01 Jan 20118:30 AM
我想将日期和时间部分分成两列,即
Date Time
13 Feb 2008 9:30 AM
22 Apr 2009 8:30 AM
14 Jul 2010 8:30 AM
01 Jan 2011 8:30 AM
有什么帮助吗?考虑过简单地分别拼接每个字符串,但想知道是否有更好的解决方案将它们作为datetime对象返回 使用+:
对于datetime对象,使用和
:
对于格式检查。我认为最好在2008和9之间留一个空格,比如2008 9而不是20089,因为用20089做某些事情的逻辑变得非常复杂。这就是数据的来源,我无法选择。
df['GMT'] = pd.to_datetime(df['GMT'], format='%d %b %Y%H:%M %p')
df['Date'] = df['GMT'].dt.strftime('%d %b %Y')
df['Time'] = df['GMT'].dt.strftime('%H:%M %p')
print (df)
GMT Date Time
0 2008-02-13 09:30:00 13 Feb 2008 09:30 AM
1 2009-04-22 08:30:00 22 Apr 2009 08:30 AM
2 2010-07-14 08:30:00 14 Jul 2010 08:30 AM
3 2011-01-01 08:30:00 01 Jan 2011 08:30 AM
df['GMT'] = pd.to_datetime(df['GMT'], format='%d %b %Y%H:%M %p')
df['Date'] = df['GMT'].dt.date
df['Time'] = df['GMT'].dt.time
print (df)
GMT Date Time
0 2008-02-13 09:30:00 2008-02-13 09:30:00
1 2009-04-22 08:30:00 2009-04-22 08:30:00
2 2010-07-14 08:30:00 2010-07-14 08:30:00
3 2011-01-01 08:30:00 2011-01-01 08:30:00