减去TimeDate列

2024-05-09 00:58:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,其中包含会话的开始时间和结束时间。你知道吗

我想了解如何做结束时间-开始时间,以获得会话的持续时间。你知道吗

到目前为止,我有这个,它的工作

start_time = "2016-11-09 18:06:17"
end_time ="2016-11-09 18:21:07"
start_dt = dt.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') 
end_dt = dt.datetime.strptime(end_time, '%Y-%m-%d %H:%M:%S')

diff = (end_dt - start_dt) 
duration = diff.seconds/60 
print (duration)

但我想一次完成整个专栏。你知道吗


Tags: 文件csvdatetimetime时间dtdiffstart
2条回答

似乎您正在尝试对字符串而不是日期时间值运行diff。你知道吗

像这样的怎么样?你知道吗

from datetime import datetime

start_time = datetime(2016, 11, 12, 18, 06, 17)
end_time = datetime(2016, 11, 09, 18, 21, 07)
diff = end_time - start_time
print(diff.seconds / 60)

我想这应该管用。你知道吗

要从csv导入并操作日期,^{}是一种方法。因为你提供的关于你的数据的唯一信息是开始和结束时间,我将展示它。你知道吗

代码:

import pandas as pd
df = pd.read_csv(data, parse_dates=['start_time', 'end_time'],
                 infer_datetime_format=True)
print(df)

df['time_delta'] = df.end_time.values - df.start_time.values
print(df.time_delta)

测试数据:

from io import StringIO

data = StringIO(u'\n'.join([x.strip() for x in """
    start_time,end_time,a_number
    2013-09-19 03:00:00,2013-09-19 04:00:00,221.0797
    2013-09-19 04:00:00,2013-09-19 05:00:00,220.5083
    2013-09-24 03:00:00,2013-09-24 05:00:00,221.7733
    2013-09-24 04:00:00,2013-09-24 06:00:00,221.2493
""".split('\n')[1:-1]]))

结果:

           start_time            end_time  a_number
0 2013-09-19 03:00:00 2013-09-19 04:00:00  221.0797
1 2013-09-19 04:00:00 2013-09-19 05:00:00  220.5083
2 2013-09-24 03:00:00 2013-09-24 05:00:00  221.7733
3 2013-09-24 04:00:00 2013-09-24 06:00:00  221.2493

0   01:00:00
1   01:00:00
2   02:00:00
3   02:00:00
Name: time_delta, dtype: timedelta64[ns]

相关问题 更多 >