将时间数据转换为字符串以在 Python Pandas DataFrames 中进行计算

Convert time data to string for calculation in Python Pandas DataFrames

我有一个词典列表:

mylist=
[{'Start Time': '02:13:40', 'End Time': '14:13:10'},
{'Start Time': '03:12:30', 'End Time': '13:07:45'},
{'Start Time': '05:03:20', 'End Time': '17:23:10'},
... 
{'Start Time': '08:23:40', 'End Time': '19:23:40'}]

我想添加一个新列来记录开始时间和结束时间之间的时差。我尝试了以下方法:

dfmylist = pd.DataFrame(mylist)
dfmylist["new"] = (dfmylist['End Time'] - dfmylist['Start Time'])

它给了我错误:TypeError: unsupported operand type(s) for -: 'str' and 'str'

我想是因为时间数据还没有转成字符串,所以试了下:

dfmylist['Start Time'] = pd.to_timedelta(dfmylist['Start Time'] ).dt.strftime('%hh:%mm:%ss')

但是我收到错误:ValueError: expected hh:mm:ss format

我们可以像这样添加以下格式%H:%M:%S

dfmylist['Start Time'] = pd.to_datetime(dfmylist['Start Time'], format="%H:%M:%S")
dfmylist['End Time'] = pd.to_datetime(dfmylist['End Time'], format="%H:%M:%S")

获得预期结果:

>>> dfmylist["new"] = (dfmylist['End Time'] - dfmylist['Start Time'])
>>> dfmylist
    Start Time           End Time               new
0   1900-01-01 02:13:40  1900-01-01 14:13:10    0 days 11:59:30
1   1900-01-01 03:12:30  1900-01-01 13:07:45    0 days 09:55:15
2   1900-01-01 05:03:20  1900-01-01 17:23:10    0 days 12:19:50
3   1900-01-01 08:23:40  1900-01-01 19:23:40    0 days 11:00:00

您可以在一行中执行以下操作。

dfmylist["new"] = pd.to_datetime(dfmylist["End Time"]) - pd.to_datetime(dfmylist["Start Time"])