【问题标题】:Sorting Dates in a pandas DataFrame while maintaining the order in the minute对 pandas DataFrame 中的日期进行排序,同时保持分钟内的顺序
【发布时间】:2022-01-05 08:30:00
【问题描述】:

我有一个熊猫数据框,其中包含日期作为第一列,我想对其进行排序。 发生的情况是它按日期排序,但打乱了分钟的顺序,例如这是原始文本文件。

12/20/20, 16:38 - d
12/20/20, 16:37 - a
12/20/20, 16:37 - b
12/20/20, 16:37 - c

在转换为 pandas 日期时间、创建列、创建数据框、对该数据框进行排序后,我再次将其导出到另一个文本文件,现在看起来像这样。

12/20/20, 16:37 - c
12/20/20, 16:37 - a
12/20/20, 16:37 - b
12/20/20, 16:38 - d

它并没有颠倒顺序,它只是随机组织它,因为我没有这个数据的秒数,具有相同限制的多行被打乱,这不应该发生。

我目前对该问题的解决方案是以某种方式为所有具有相同时间值的单独行分配一个特殊索引,直到分钟,然后在数据帧按日期排序后,再次使用这些索引对其进行排序.

看起来像这样:

12/20/20, 16:38 - d - 1
12/20/20, 16:37 - a - 1
12/20/20, 16:37 - b - 2
12/20/20, 16:37 - c - 3

那么当我排序后再次得到这个结果时,

12/20/20, 16:37 - c - 3
12/20/20, 16:37 - a - 1
12/20/20, 16:37 - b - 2
12/20/20, 16:38 - d - 1

我可以用额外的索引对其进行排序以获得所需的结果。

12/20/20, 16:37 - a - 1
12/20/20, 16:37 - b - 2
12/20/20, 16:37 - c - 3
12/20/20, 16:38 - d - 1

但我意识到这很乏味,并希望有一个更优雅的解决方案!谢谢!

【问题讨论】:

  • 如果将kind='stable' 添加到sort_values 调用中会怎样?
  • 是的,行得通!,也 kind = 'mergesort' 也行

标签: python pandas dataframe date datetime


【解决方案1】:

我只需要更改排序方法,因为快速排序是 sort_values() 的默认方法,将其更改为“稳定”或“合并排序”可以解决此问题。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2014-11-29
  • 2017-11-28
  • 2018-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2019-02-21
  • 2013-01-16
相关资源
最近更新 更多