繁体   English   中英

创建具有时差的新列(Pandas 数据框)

[英]Create new column with time difference (Pandas dataframe)

我在 csv 数据集中有 start_time 和 end_time 列,时间格式为 HH:MM (数据类型是字符串类型,因为它来自 csv)。 我想使用 panadas(或任何实际的东西)来获取两列之间的时间增量,并将其放入名为 diff_minutes 的新列中。 为此,我尝试了以下操作,

dataset['diff_minutes'] = dataset['end_time'] - dataset['start_time']
dataset['diff_minutes']= dataset['diff_minutes']/np.timedelta64(1,'m')

但我收到以下错误ValueError: hour must be in 0..23 我检查了我的数据集(它很大),结果我有一些小时超过 23。例如,start_time : 25:58, end_time : 29:20。 是否有另一种方法可以获得大于 23 的值的时间增量?

这是示例数据:

import pandas as pd
from io import StringIO
s = '''\
start_time,end_time
25:58,29:20
25:30,25:30
02:07,03:11
'''
df = pd.read_csv(StringIO(s))

看起来像:

  start_time end_time
0      25:58    29:20
1      25:30    25:30
2      02:07    03:11

期望输出

| start_time | end_time | diff_minutes
______________________________________
| 25:58      | 29:20    | 202
| 25:30      | 25:30    | 0
| 02:07      | 03:11    | 64

您可以通过to_timedelta将列转换为 timedeltas,如有必要也可以转换为字符串:

dataset['diff_minutes'] = (pd.to_timedelta(dataset['end_time'].astype(str) + ':00') -
                           pd.to_timedelta(dataset['start_time'].astype(str) + ':00' ))
dataset['diff_minutes']= dataset['diff_minutes']/np.timedelta64(1,'m')
print (dataset)
  start_time end_time  diff_minutes
0      25:58    29:20         202.0
1      25:30    25:30           0.0
2      02:07    03:11          64.0

暂无
暂无

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

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