python - 解析 Pandas DataFrame 中的日期/时间字符串

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

最佳答案

使用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

对于日期时间对象,使用 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/ .

关于python - 解析 Pandas DataFrame 中的日期/时间字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43978022/

相关文章:

python - 为什么此代码没有删除行? (Flask-SQLAlchemy)

python - OpenCV:WAITING不同的 key ?

python - 多级数据框分组

python - 从列表框项中获取文本

python - 在 Python 中拆分 Dataframe 列

python - Pandas :如何按类别分组(和求和)并保留子类别的信息

python - 根据 diff 过滤 DataFrame,其中 bool 值重复

python - 当列表中任何元素的值发生更改时,如何定义可调用函数?

python - Pandas 使用 "larger"DataFrames 追加性能连接/追加

python - pandas 合并两个数据框