python - 如何通过考虑规则来使python中的日期升序? [复制]

Posted

技术标签:

【中文标题】python - 如何通过考虑规则来使python中的日期升序? [复制]【英文标题】:How to make Ascending order of dates in python by considering rules? [duplicate] 【发布时间】:2022-01-11 03:38:53 【问题描述】:

我有一个数据集,例如不同的 NIC 和日期(带时间),如下所示。

NICS            Date and Time
1156986       8/30/2021  11:48:21 AM
1156986       7/30/2021  11:48:21 AM
1156986       6/30/2021  11:48:21 AM
1156984       5/30/2021  11:48:21 AM
1156984       4/30/2021  11:48:21 AM
1156984       3/30/2021  11:48:21 AM

我需要将这些数据集按升序排列,但也要考虑网卡。输出应如下所示,

NICS            Date and Time
1156986       6/30/2021  11:48:21 AM
1156986       7/30/2021  11:48:21 AM
1156986       8/30/2021  11:48:21 AM
1156984       3/30/2021  11:48:21 AM
1156984       4/30/2021  11:48:21 AM
1156984       5/30/2021  11:48:21 AM

所以我尝试了以下代码,但它为我提供了整个列表的升序,并且没有考虑 NIC。

df.sort_values(by="Date and Time", key=pd.to_datetime)

我应该如何获取每个 NIC 值的数据集的升序?

【问题讨论】:

合并之前的列? 不。我不知道。你能帮帮我吗?@Jan 【参考方案1】:

您需要按 NIC 降序排序,然后按升序排序

s = """NICS,Date and Time
1156986,8/30/2021  11:48:21 AM
1156986,7/30/2021  11:48:21 AM
1156986,6/30/2021  11:48:21 AM
1156984,5/30/2021  11:48:21 AM
1156984,4/30/2021  11:48:21 AM
1156984,3/30/2021  11:48:21 AM"""

df = pd.read_csv(StringIO(s))

df['Date and Time'] = pd.to_datetime(df['Date and Time'])
df.sort_values(['NICS', 'Date and Time'], ascending=[False, True], inplace=True)

df
    NICS    Date and Time
2   1156986 2021-06-30 11:48:21
1   1156986 2021-07-30 11:48:21
0   1156986 2021-08-30 11:48:21
5   1156984 2021-03-30 11:48:21
4   1156984 2021-04-30 11:48:21
3   1156984 2021-05-30 11:48:21

【讨论】:

以上是关于python - 如何通过考虑规则来使python中的日期升序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

python通过返回嵌入的可迭代来使类可迭代

通过tryexcept和else的使用来使Python程序更加“强壮”

如何在python中按条件应用聚类

如何通过 Python/C API 将 Python 实例传递给 C++

是否有一个统一的 python 库来使用不同的协议传输文件

python的线程如何返回值?