Python 以字符串格式按日期/时间排序的最佳方法?

Python 以字符串格式按日期/时间排序的最佳方法?,python,python-3.x,list,sorting,datetime,Python,Python 3.x,List,Sorting,Datetime,因此,我有一个字符串列表,表示自行车共享服务的信息。特别是,每个字符串表示自行车被卡车移动到不同站点的时间。最后一项中的每一项都是这样表示的: "By_Truck ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')" 我想做的是按时间顺序对列表排序。然而,我不确定最好的方法是什么。有人有什么建议吗?您可以通过以下方式使用软件包: impo

因此,我有一个字符串列表,表示自行车共享服务的信息。特别是,每个字符串表示自行车被卡车移动到不同站点的时间。最后一项中的每一项都是这样表示的:

"By_Truck   ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')"
我想做的是按时间顺序对列表排序。然而,我不确定最好的方法是什么。有人有什么建议吗?

您可以通过以下方式使用软件包:

import pandas as pd
By_Truck = ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')
# Create a DataFrame from the tuple ordered by pairs
df = pd.DataFrame(By_Truck[n:n + 2] for n, i in enumerate(By_Truck) if n % 2 == 0) 
# Set columns names
df.columns = ["date_time", "location"]
# Make type to datetime
df.date_time = pd.to_datetime(df.date_time)
df = df.set_index(["date_time"])
# Sort by index column
df = df.sort_index(axis=0,ascending=True)
结果将是:

>>> df
                            location
date_time                           
2019-06-09 15:21:06  W 43 St & 6 Ave
2019-06-09 15:46:49  W 33 St & 7 Ave

似乎每个字符串都有相同的格式

"way   ('start-move-datetime', 'from-location', 'end-move-datetime', 'to-location')"
如果字符串的开头总是
By_Truck(“”
),后跟开始移动日期时间,并且您在开始移动日期时间进行排序,那么您只需对字符串进行排序,而不必考虑其更多内容

sorted_list = sorted(your_list)

取决于您是否要修改列表

如果字符串的开头不总是相同的,并且您仍然希望在开始移动日期时进行排序,则可以这样做

sorted(your_list, key=lambda _: _.split("'")[1])
sorted(your_list, key=lambda _: _.split("'")[-4])
如果您想在结束时对move datetime进行排序,无论字符串是否以相同的标题开头,您都可以这样做

sorted(your_list, key=lambda _: _.split("'")[1])
sorted(your_list, key=lambda _: _.split("'")[-4])
在所有情况下,我假设日期的格式为yyyy/mm/dd

>>> l = ["By_Truck   ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')", 
...      "By_Truck   ('2019/06/08 15:21:06', 'W 43 St & 6 Ave', '2019/06/89 15:46:49', 'W 33 St & 7 Ave')", 
...      "By_Truck   ('2019/06/19 15:21:06', 'W 43 St & 6 Ave', '2019/06/19 15:46:49', 'W 33 St & 7 Ave')"]
>>> 
>>> sorted(l)
["By_Truck   ('2019/06/08 15:21:06', 'W 43 St & 6 Ave', '2019/06/89 15:46:49', 'W 33 St & 7 Ave')", "By_Truck   ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')", "By_Truck   ('2019/06/19 15:21:06', 'W 43 St & 6 Ave', '2019/06/19 15:46:49', 'W 33 St & 7 Ave')"]
>>> 
>>> l = ["By_Truck   ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')", 
...      "By_Car   ('2019/06/08 15:21:06', 'W 43 St & 6 Ave', '2019/06/08 15:46:49', 'W 33 St & 7 Ave')", 
...      "By_Bicycle   ('2019/06/01 15:21:06', 'W 43 St & 6 Ave', '2019/06/19 15:46:49', 'W 33 St & 7 Ave')"]
>>> 
>>> sorted(l, key=lambda _: _.split("'")[1])
["By_Bicycle   ('2019/06/01 15:21:06', 'W 43 St & 6 Ave', '2019/06/19 15:46:49', 'W 33 St & 7 Ave')", "By_Car   ('2019/06/08 15:21:06', 'W 43 St & 6 Ave', '2019/06/08 15:46:49', 'W 33 St & 7 Ave')", "By_Truck   ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')"]
>>> 
>>> sorted(l, key=lambda _: _.split("'")[-4])
["By_Car   ('2019/06/08 15:21:06', 'W 43 St & 6 Ave', '2019/06/08 15:46:49', 'W 33 St & 7 Ave')", "By_Truck   ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')", "By_Bicycle   ('2019/06/01 15:21:06', 'W 43 St & 6 Ave', '2019/06/19 15:46:49', 'W 33 St & 7 Ave')"]
>>> 

每个条目都是一个元组吗?请用Python语法提供数据结构。那是什么?一个字符串?一个变量名?@trincot它是一个字符串列表。我用粗体显示的是列表中的一个字符串。我将再次编辑它,以显示它的实际情况(我刚刚从打印中复制)。很明显,字符串包含一个元组表示形式,如
(从位置开始移动到位置结束移动)
您必须说明是否要按开始移动日期时间或结束移动进行排序;如果字符串的开头始终是
,则日期格式为yyyy/mm/dd或可能性较小的yyyy/dd/mm(
如果您在开始移动时进行排序,您只需对字符串进行排序,而不考虑其更多内容,因此
已排序(您的字符串列表)
…很难变得更简单