因此,我有一个表示自行车共享服务信息的字符串列表。特别是,每条线代表当一辆自行车被卡车移动到不同的车站时。最后一项中的每一项表示如下:
"By_Truck ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')"我想做的是按时间顺序对列表进行排序。然而,我不知道做这件事的最佳方法是什么。有人有什么建议吗?
发布于 2021-03-15 18:48:58
您可以以以下方式使用pandas包:
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发布于 2021-03-15 18:57:01
似乎每个字符串都有这样的格式
"way ('start-move-datetime', 'from-location', 'end-move-datetime', 'to-location')"如果字符串的开头始终是By_Truck ("',然后是开始移动日期时间,并且在开始移动日期时间排序,则只需对字符串排序,而不考虑字符串的更多内容。
sorted_list = sorted(your_list)或
your_list.sort()取决于您是否愿意修改列表
如果字符串的开头并不总是相同的,并且仍然希望在开始移动日期时间排序,则可以这样做。
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')"]
>>> https://stackoverflow.com/questions/66643428
复制相似问题