计算熊猫数据框中两个hh:mm列之间的时间差

时间:2020-10-28 22:13:24

标签: python pandas

我正在从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

1 个答案:

答案 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