我正在从csv文件读取一些数据,其中两列的数据类型为hh:mm格式。这是一个示例:
Start End
11:15 15:00
22:30 2:00
在上面的示例中,第二行的结束发生在第二天。我试图以最有效的方式获取这两列之间的时差,因为数据集很大。有什么好的Python方式可以做到这一点吗?另外,由于没有日期,并且下次发生一些结尾,因此在计算差异时会得到错误的结果。
>>> import pandas as pd
>>> df = pd.read_csv(file_path)
>>> pd.to_datetime(df['End'])-pd.to_datetime(df['Start'])
0 0 days 03:45:00
1 0 days 03:00:00
2 -1 days +03:30:00
答案 0 :(得分:2)
您可以将(a+x)%x
的技术timedelta
用于24小时(或1天,相同)
+ timedelta(hours=24)
使所有值都变为正值% timedelta(hours=24)
使24h
后面24h
上方的内容df['duration'] = (pd.to_datetime(df['End']) - pd.to_datetime(df['Start']) + timedelta(hours=24)) \
% timedelta(hours=24)
给予
Start End duration
0 11:15 15:00 0 days 03:45:00
1 22:30 2:00 0 days 03:30:00