将时间数据转换为字符串以在 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"])
我有一个词典列表:
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"])