python - 按日期和时间python对数据进行排序
问题描述
我的数据在 txt 文件中。
1 B F 2019-03-10
1 C G 2019-03-11
1 B H 2019-03-10
1 C I 2019-03-10
1 B J 2019-03-10
2 A K 2019-03-10
1 D L 2019-03-10
2 D M 2019-03-10
2 E N 2019-03-11
1 E O 2019-03-10
我需要做的是根据第一列拆分数据。
因此,第一列中编号为 1 的所有行都转到一个列表(或字典或其他),而第一列中编号为 2 的所有行都转到另一个列表或其他列表中。这是一个样本数据,在原始数据中,我们不知道第一列中有多少个不同的数字。
我接下来要做的是按日期和时间对每个键的数据(在我的情况下是数字 1 和 2)进行排序。我可以用 data.txt 做到这一点,但不能用字典。
with open("data.txt") as file:
reader = csv.reader(file, delimiter="\t")
data=sorted(reader, key=itemgetter(0))
lines = sorted(data, key=itemgetter(3))
lines
OUTPUT:
[['1', 'B', 'F', '2019-03-10'],
['2', 'D', 'M', '2019-03-10'],
['1', 'B', 'H', '2019-03-10'],
['1', 'C', 'I', '2019-03-10'],
['1', 'B', 'J', '2019-03-10'],
['1', 'D', 'L', '2019-03-10'],
['2', 'A', 'K', '2019-03-10'],
['1', 'E', 'O', '2019-03-10'],
['1', 'C', 'G', '2019-03-11'],
['2', 'E', 'N', '2019-03-11']]
所以我需要的是按第一列中的数字对数据进行分组,并按日期和时间对其进行排序。谁能帮我以某种方式组合这两个代码?我不确定我是否必须使用字典,也许还有另一种方法可以做到这一点。
解决方案
根据第一列拆分数据后,可以对每个key对应的列表进行排序
def sort_by_time(key_items):
return sorted(key_items, key=itemgetter(3))
d = {k: sort_by_time(v) for k, v in d.items()}
如果d
时间和日期有单独的元素,那么您可以按几列排序:
sorted(key_items, key=itemgetter(2, 3))
推荐阅读
- javascript - 如何在javascript中替换对象属性名称的数组
- javascript - 如何使用自定义标签插件在 Hexo 中渲染获取的数据?
- c# - 任务结果总是返回 null
- powerbi - 按月或年计算员工人数
- matlab - MATLAB 三重积分的问题
- r - 某些条件下的累计
- python - 使用 df.to_excel 将按钮插入电子表格
- c# - 由于我不太理解的错误而无法构建 - “ReferencePath”没有定义元数据“CopyLocal”的值
- java - 为什么我不能导入 javafx,即使我已经为 eclipse 安装了 e(fx)clipse
- asp.net-core - 从 .Net core Web Api 生成和下载 excel 文件返回 500 错误