我有一个像这样的数据框
open Start show Einde show
5 NaN 11:30 NaN
6 16:00 18:00 19:45
7 14:30 16:30 18:15
8 NaN NaN NaN
9 18:45 20:45 22:30
这些小时为字符串格式,我想将其转换为日期时间格式。每当我尝试使用pd.to_datetime(evs['open'], errors='coerce')
(更改其中一列)时,它会将小时更改为完整的日期时间格式,例如:2020-04-03 16:00:00
带今天的日期。我只想有一个小时,但是仍然是日期时间格式,所以我可以添加分钟等。
现在,当我dt.hour
用来访问小时时,它返回一个字符串,而不是HH:MM
格式。
有人可以帮我吗?我正在通过Pandas读取CSV,read_csv
但是当我使用日期解析器时,我遇到了同样的问题。理想情况下,这将在本read_csv
节中得到解决,而不是单独进行修复,但是在这一点上,我将采取任何措施。
谢谢!
克里斯评论说,不可能只将小时和分钟转换为日期时间格式。但是您可以使用timedeltas解决您的问题。
import datetime
import pandas as pd
def to_timedelta(date):
date = pd.to_datetime(date)
try:
date_start = datetime.datetime(date.year, date.month, date.day, 0, 0)
except TypeError:
return pd.NaT # to keep dtype of series; Alternative: pd.Timedelta(0)
return date - date_start
df['open'].apply(to_timedelta)
输出:
5 NaT
6 16:00:00
7 14:30:00
8 NaT
9 18:45:00
Name: open, dtype: timedelta64[ns]
现在,您可以使用datetime.timedelta来添加/减去分钟,小时或其他任何时间:
df['open'] + datetime.timedelta(minutes=15)
输出:
5 NaT
6 16:15:00
7 14:45:00
8 NaT
9 19:00:00
Name: open, dtype: timedelta64[ns]
同样,返回完整的日期时间也很容易:
df['open'] + datetime.datetime(2020, 4, 4)
输出:
5 NaT
6 2020-04-04 16:00:00
7 2020-04-04 14:30:00
8 NaT
9 2020-04-04 18:45:00
Name: open, dtype: datetime64[ns]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句