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中的日期升序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
通过tryexcept和else的使用来使Python程序更加“强壮”