使用 numpy 对日期时间列表进行排序

问题描述 投票:0回答:1

我正在读取一个文本文件,其输出如下所示:

['XXXX_10      SATLIT        9.900   2024/319 12:22:00  2024/319 12:31:03   TR2    # SOH'
 'XXXX_10      SATLIT        9.900   2024/319 12:22:00  2024/319 12:31:03   TR2    # SOH'
 'XXXX_10      SATLIT        9.900   2024/319 12:55:03  2024/319 13:17:38   TR2    # SOH'
 'XXXX_10      SATLIT        9.900   2024/319 12:55:03  2024/319 13:17:38   TR2    # SOH'
 'XXXX_10      SATLIT        9.900   2024/319 14:33:50  2024/319 14:45:00   TR2    # SOH'
 'XXXX_10      SATLIT        9.900   2024/319 14:33:50  2024/319 14:45:00   TR2    # SOH'
 'XXXX_10      SATLIT        9.900   2024/319 19:47:00  2024/319 20:08:37   TR2    # SOH'
 'XXXX_11      SATLIT        9.900   2024/319 12:22:00  2024/319 12:31:03   TR2    # SOH'
 'XXXX_11      SATLIT        9.900   2024/319 12:22:00  2024/319 12:31:03   TR2    # SOH'
 'XXXX_11      SATLIT        9.900   2024/319 12:55:03  2024/319 13:16:47   TR2    # SOH'
 'XXXX_11      SATLIT        9.900   2024/319 12:55:03  2024/319 13:16:47   TR2    # SOH'
 'XXXX_11      SATLIT        9.900   2024/319 14:33:50  2024/319 14:45:00   TR2    # SOH'
 'XXXX_11      SATLIT        9.900   2024/319 14:33:50  2024/319 14:45:00   TR2    # SOH'
 'XXXX_11      SATLIT        9.900   2024/319 19:47:00  2024/319 20:07:47   TR2    # SOH'
 'XXXX_12      SATLIT        9.900   2024/319 19:47:00  2024/319 20:13:11   TR2    # SOH'
 'XXXX_12      SATLIT        9.900   2024/319 19:47:00  2024/319 20:13:11   TR2    # SOH'
 'XXXX_12      SATLIT        9.900   2024/319 21:29:03  2024/319 22:28:00   TR2    # SOH'
 'XXXX_12      SATLIT        9.900   2024/319 21:29:03  2024/319 22:28:00   TR2    # SOH'
 'XXXX_12      SATLIT        9.900   2024/320 01:32:00  2024/320 01:54:06   TR2    # SOH'
 'XXXX_12      SATLIT        9.900   2024/320 01:32:00  2024/320 01:54:06   TR2    # SOH'
 'XXXX_12      SATLIT        9.900   2024/320 02:37:13  2024/320 02:54:27   TR2    # SOH'
 'XXXX_6       SATLIT        9.900   2024/319 11:44:00  2024/319 12:00:00   TR2    # SOH'
 'XXXX_6       SATLIT        9.900   2024/319 11:44:00  2024/319 12:00:00   TR2    # SOH'
 'XXXX_6       SATLIT        9.900   2024/319 12:55:03  2024/319 13:41:19   TR2    # SOH'
 'XXXX_6       SATLIT        9.900   2024/319 12:55:03  2024/319 13:41:19   TR2    # SOH'
 'XXXX_6       SATLIT        9.900   2024/319 15:05:00  2024/319 15:11:00   TR2    # SOH'
 'XXXX_6       SATLIT        9.900   2024/319 15:05:00  2024/319 15:11:00   TR2    # SOH'
 'XXXX_6       SATLIT        9.900   2024/319 18:32:00  2024/319 19:02:03   TR2    # SOH']

如何使用 np 使用第一个时隙对该数组进行排序?第 4 栏和第 5 栏。

searchfile = open('SATLIT_schedule.txt')

d = np.array(searchfile.readlines())
sortd = np.sort(d, 3)
print sortd
python arrays numpy sorting datetime
1个回答
0
投票

嗯,我假设您指定的日期格式为 YYYY/DDD(第 4 列)HH:MM:SS(第 5 列)。这是我使用 numpy 和 pandas 编写的解决方案:

import pandas as pd
import numpy as np
df = np.genfromtxt("SATLIT_schedule.txt", dtype=str)
df = pd.DataFrame(df)

然后您可以将 HH:MM:SS 列连接到相应的 YYYY/DDD 列

df.loc[:, 3] = df.loc[:, 3] + "/" + df.loc[:, 4]
df.loc[:, 5] = df.loc[:, 5] + "/" + df.loc[:, 6]

当然,我们可以去掉 HH:MM:SS 列,因为它们已经连接到相应的 YYYY/DDD 列

df.drop(4, axis=1, inplace=True)
df.drop(6, axis=1, inplace=True)

实际上,我们可以按字典顺序对日期时间列进行排序,由于格式 (YYYY/DDD/HH:MM:SS) 是按顺序或重要性排序的,因此它将按日期排序。

df.sort_values(3, axis=0, ascending=False)

然后我们得到最终排序的 pandas Dataframe:

print(df)

排序数据框

© www.soinside.com 2019 - 2024. All rights reserved.