在Pandas DataFrame中解析日期/时间字符串

时间:2017-05-15 11:13:26

标签: python pandas

我有以下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

我想要的是将日期和时间部分分成两个单独的列,即

    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对象返回。

1 个答案:

答案 0 :(得分:2)

使用to_datetime + dt.strftime

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

对于datetime对象,使用dt.datedt.time

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

格式检查http://strftime.org/