neh*_*eha -1 python datetime pandas
我有一个数据帧'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
Run Code Online (Sandbox Code Playgroud)
我想分别将此属性中的值拆分为日期和时间.所以我将有两个新列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
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做?
以下应该有效:
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
Run Code Online (Sandbox Code Playgroud)
datetime列具有.dt返回dt.date和dt.time组件的访问器.
请注意,此返回datetime.date和datetime.time不支持向量化操作的对象.
这假设dtype已经是datetime,如果没有,那么你需要使用to_datetime:
df['TR_DATE'] = pd.to_datetime(df['TR_DATE']
Run Code Online (Sandbox Code Playgroud)
在上述电话之前
如果您只想要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
Run Code Online (Sandbox Code Playgroud)
同样,因为这些是字符串,您无法执行算术运算