![](/img/trans.png)
[英]Create a new Dataframe based on Time Difference and a condition on columns in pandas dataframe
[英]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.