我有两列startDate和endDate 我需要计算这些日期之间从0到23的小时数 例如,开始日期为2000-12-05 10:00:00,结束日期为2001-01-15 15:00:00 我需要计算python中这两个日期之间的0到23点之间发生了多少次
我从日期和计算的小时数之间取了差额。 之后,我计划从startDate到startDateHour *小时中提取开始时间来获取endHour 并遍历字典以增加计数,但是还有其他方法可以做到这一点吗?
df['diff'] = df['endDate'] - df['startDate']
df['hours']= df['diff'] / np.timedelta64(1, 'h')
答案 0 :(得分:0)
您可以这样做:
>>> df['diff'] = df['endDate'] - df['startDate']
>>> df['hours'] = df['diff'].dt.components.hours
考虑到这些是pd.Timedelta
对象。
>>> idx = pd.date_range('2018-01-01', periods=5, freq='H')
>>> df = pd.DataFrame({'ts':ts, 'ts_2':ts + pd.Timedelta(hours=1)})
>>> df
ts ts_2
0 2018-01-01 00:00:00 2018-01-01 01:00:00
1 2018-01-01 01:00:00 2018-01-01 02:00:00
2 2018-01-01 02:00:00 2018-01-01 03:00:00
3 2018-01-01 03:00:00 2018-01-01 04:00:00
4 2018-01-01 04:00:00 2018-01-01 05:00:00
>>> df['hour'] = (df['ts_2'] - df['ts']).dt.components.hours
>>> df
ts ts_2 hour
0 2018-01-01 00:00:00 2018-01-01 01:00:00 1
1 2018-01-01 01:00:00 2018-01-01 02:00:00 1
2 2018-01-01 02:00:00 2018-01-01 03:00:00 1
3 2018-01-01 03:00:00 2018-01-01 04:00:00 1
4 2018-01-01 04:00:00 2018-01-01 05:00:00 1
答案 1 :(得分:0)
from datetime import datetime
X = (datetime.strptime(2020-01-05 01:19:49, '%Y-%m-%d %h:%m:%s') -
datetime.strptime(2020-01-02 06:12:44, '%Y-%m-%d %h:%m:%s'))
print(X)