首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从python的日期时间序列中删除年月日期?

如何从python的日期时间序列中删除年月日期?
EN

Stack Overflow用户
提问于 2017-04-23 06:11:04
回答 3查看 8.1K关注 0票数 6

我有一个日期序列,我只想保持“小时-迷你-秒”字符串在这个系列中,并删除年-月-日期字符串。那我该怎么办?

原创系列:

代码语言:javascript
复制
0         2000-12-31 22:12:40
1         2000-12-31 22:35:09
2         2000-12-31 22:32:48
3         2000-12-31 22:04:35
4         2001-01-06 23:38:11
5         2000-12-31 22:37:48
……

目标:

代码语言:javascript
复制
0          22:12:40
1          22:35:09
2          22:32:48
3          22:04:35
4          23:38:11
5          22:37:48
……

很明显,原来的系列已经通过使用pandas.to_datetime()从unix时间戳系列中翻译出来了。但我无法用这种方法达到我的目标:

如有任何建议,敬请谅解!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-23 06:13:45

使用dt.strftime

代码语言:javascript
复制
#if necessary convert to datetime
#df['date'] = pd.to_datetime(df['date'])

print (df.dtypes)
date    datetime64[ns]
dtype: object

df['time'] = df['date'].dt.strftime('%H:%M:%S')
print (df)
                 date      time
0 2000-12-31 22:12:40  22:12:40
1 2000-12-31 22:35:09  22:35:09
2 2000-12-31 22:32:48  22:32:48
3 2000-12-31 22:04:35  22:04:35
4 2001-01-06 23:38:11  23:38:11
5 2000-12-31 22:37:48  22:37:48

或者转换为stringsplit并通过str[1]选择lists的第二个值:

代码语言:javascript
复制
#if dtype of date column is object (obviously string), omit astype
df['time'] = df['date'].astype(str).str.split().str[1]
print (df)
                 date      time
0 2000-12-31 22:12:40  22:12:40
1 2000-12-31 22:35:09  22:35:09
2 2000-12-31 22:32:48  22:32:48
3 2000-12-31 22:04:35  22:04:35
4 2001-01-06 23:38:11  23:38:11
5 2000-12-31 22:37:48  22:37:48
票数 6
EN

Stack Overflow用户

发布于 2017-04-23 15:02:46

你已经有了很好的答案了。但是,它们将它们存储为字符串,您可能希望将它们存储为实际的datetime.time对象:

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame([
    {'date': '2000-12-31 22:12:40'},
    {'date': '2000-12-31 22:35:09'},
    {'date': '2000-12-31 22:32:48'},
    {'date': '2000-12-31 22:04:35'},
    {'date': '2001-01-06 23:38:11'},
    {'date': '2000-12-31 22:37:48'},
])

df['date'] = pd.to_datetime(df['date'])
df['time'] = df['date'].dt.time

print(df)
print(df['time'].dtype)
print(type(df['time'][0]))
代码语言:javascript
复制
                 date      time
0 2000-12-31 22:12:40  22:12:40
1 2000-12-31 22:35:09  22:35:09
2 2000-12-31 22:32:48  22:32:48
3 2000-12-31 22:04:35  22:04:35
4 2001-01-06 23:38:11  23:38:11
5 2000-12-31 22:37:48  22:37:48
object
<class 'datetime.time'>

编辑:

注意到您的目标没有date列。在末尾添加以下内容:

代码语言:javascript
复制
del df['date']
print(df)
代码语言:javascript
复制
       time
0  22:12:40
1  22:35:09
2  22:32:48
3  22:04:35
4  23:38:11
5  22:37:48
票数 4
EN

Stack Overflow用户

发布于 2017-04-23 06:57:25

使用:datetime

代码语言:javascript
复制
from datetime import datetime
your_datetime = "2017-01-01 23:00:00"
dt = datetime.strptime(your_datetime , "%Y-%m-%d %H:%M:%S").strftime('%H:%M:%S')
print dt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43567986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档