处理python中的timestamp属性?

时间:2017-08-25 08:45:04

标签: python pandas datetime

我有一个数据框'df',其中一个属性是日期时间。此属性中的值如下所示:

>>df['TR_DATE']
0         2015-03-18 19:59:58 
1         2015-03-19 13:23:37
2         2015-03-19 13:27:04
3         2015-03-19 14:23:53
4         2015-03-19 15:01:50
5         2015-03-19 17:45:42
6         2015-03-19 17:49:58

我想将此属性中的值分别作为日期和时间进行拆分。所以我将有两个新列df ['DATE']和df ['TIME']包含值:

>>df['DATE']
         2015-03-18  
         2015-03-19 
         2015-03-19 
         2015-03-19
         2015-03-19 
         2015-03-19 
         2015-03-19 
>>df['Time']
         19:59:58 
         13:23:37
         13:27:04
         14:23:53
         15:01:50
         17:45:42
         17:49:58

我怎么能这样做?

1 个答案:

答案 0 :(得分:5)

以下内容应该有效:

In[229]:
df['DATE'] = df['TR_DATE'].dt.date
df['TIME'] = df['TR_DATE'].dt.time
df

Out[229]: 
              TR_DATE        DATE      TIME
0 2015-03-18 19:59:58  2015-03-18  19:59:58
1 2015-03-19 13:23:37  2015-03-19  13:23:37
2 2015-03-19 13:27:04  2015-03-19  13:27:04
3 2015-03-19 14:23:53  2015-03-19  14:23:53
4 2015-03-19 15:01:50  2015-03-19  15:01:50
5 2015-03-19 17:45:42  2015-03-19  17:45:42
6 2015-03-19 17:49:58  2015-03-19  17:49:58

datetime列包含.dt访问者,可返回dt.datedt.time个组件。

请注意,这会返回不支持向量化操作的datetime.datedatetime.time个对象。

这假设dtype已经是日期时间,如果没有,则需要使用to_datetime进行转换:

df['TR_DATE'] = pd.to_datetime(df['TR_DATE']

在上述电话之前

如果您只想要str个陈述,可以致电dt.strftime

In[231]:
df['DATE'] = df['TR_DATE'].dt.strftime('%Y-%m-%d')
df['TIME'] = df['TR_DATE'].dt.strftime('%H:%M:%S')
df

Out[231]: 
              TR_DATE        DATE      TIME
0 2015-03-18 19:59:58  2015-03-18  19:59:58
1 2015-03-19 13:23:37  2015-03-19  13:23:37
2 2015-03-19 13:27:04  2015-03-19  13:27:04
3 2015-03-19 14:23:53  2015-03-19  14:23:53
4 2015-03-19 15:01:50  2015-03-19  15:01:50
5 2015-03-19 17:45:42  2015-03-19  17:45:42
6 2015-03-19 17:49:58  2015-03-19  17:49:58

再次,因为这些是字符串,你不能执行算术运算