我有一个数据框'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
我怎么能这样做?
答案 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.date
和dt.time
个组件。
请注意,这会返回不支持向量化操作的datetime.date
和datetime.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
再次,因为这些是字符串,你不能执行算术运算