首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以字符串格式按日期/时间排序的最佳方法?

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

Stack Overflow用户
提问于 2021-03-15 18:16:39
回答 2查看 151关注 0票数 0

因此,我有一个表示自行车共享服务信息的字符串列表。特别是,每条线代表当一辆自行车被卡车移动到不同的车站时。最后一项中的每一项表示如下:

代码语言:javascript
复制
"By_Truck   ('2019/06/09 15:21:06', 'W 43 St & 6 Ave', '2019/06/09 15:46:49', 'W 33 St & 7 Ave')"

我想做的是按时间顺序对列表进行排序。然而,我不知道做这件事的最佳方法是什么。有人有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2021-03-15 18:48:58

您可以以以下方式使用pandas包:

代码语言:javascript
复制
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)

其结果将是:

代码语言:javascript
复制
>>> 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
票数 0
EN

Stack Overflow用户

发布于 2021-03-15 18:57:01

似乎每个字符串都有这样的格式

代码语言:javascript
复制
"way   ('start-move-datetime', 'from-location', 'end-move-datetime', 'to-location')"

如果字符串的开头始终是By_Truck ("',然后是开始移动日期时间,并且在开始移动日期时间排序,则只需对字符串排序,而不考虑字符串的更多内容。

代码语言:javascript
复制
sorted_list = sorted(your_list)

代码语言:javascript
复制
your_list.sort()

取决于您是否愿意修改列表

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

代码语言:javascript
复制
sorted(your_list, key=lambda _: _.split("'")[1])

如果希望在结束移动日期时间对字符串进行排序,无论字符串启动与否,都可以使用相同的标头进行排序。

代码语言:javascript
复制
sorted(your_list, key=lambda _: _.split("'")[-4])

在任何情况下,我都认为日期是yyyy/mm/dd格式。

代码语言:javascript
复制
>>> 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')"]
>>> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66643428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档