繁体   English   中英

如何从python中的datetime系列中删除Year-Month-Date?

[英]How to drop the Year-Month-Date from a datetime series in python?

我有一个日期时间系列,我想只保留系列中的“Hour-Miniute-Second”字符串,并删除Year-Month-Date字符串。 所以我该怎么做?

原创系列:

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时间戳系列中翻译pandas.to_datetime() 但我无法使用此方法达到我的目标:(

任何建议表示赞赏!

使用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

或者转换为stringsplit并按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

使用: 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 dt

你已经有了一些不错的答案。 但是,它们将它们存储为字符串,您可能希望将它们存储为实际的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM