我有一个日期序列,我只想保持“小时-迷你-秒”字符串在这个系列中,并删除年-月-日期字符串。那我该怎么办?
原创系列:
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
……目标:
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时间戳系列中翻译出来了。但我无法用这种方法达到我的目标:
如有任何建议,敬请谅解!
发布于 2017-04-23 06:13:45
使用dt.strftime
#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或者转换为string、split并通过str[1]选择lists的第二个值:
#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发布于 2017-04-23 15:02:46
你已经有了很好的答案了。但是,它们将它们存储为字符串,您可能希望将它们存储为实际的datetime.time对象:
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])) 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列。在末尾添加以下内容:
del df['date']
print(df) 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发布于 2017-04-23 06:57:25
使用:datetime
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 dthttps://stackoverflow.com/questions/43567986
复制相似问题