python - 使用字符串日期对 pandas csv 列表进行排序

标签 python pandas csv

我之前读过几篇关于该问题的类似文章,但没有一个解决方案对我有用。所以我得到了以下 csv:


    Score    date       term
0      72   3 Feb ·      1
1      47   1 Feb ·      1
2     119   6 Feb ·      1
8     101   7 hrs ·      1
9     536  11 min ·      1
10     53   2 hrs ·      1
11     20  11 Feb ·      3
3      15   1 hrs ·      2
4      33   7 Feb ·      1
5     153   4 Feb ·      3
6      34   3 min ·      2
7      26   3 Feb ·      3

我想按日期对 csv 进行排序。最简单的方法是什么?

最佳答案

您可以创建 2 个辅助列 - 其中一个用于由 to_datetime 创建的日期时间第二个是 to_timedelta 创建的时间增量,只有必要的格式HH:MM:SS,所以添加了Series.replace通过正则表达式,所以最后可以按 DataFrame.sort_values 按 2 列排序:

df['date1'] = pd.to_datetime(df['date'], format='%d %b', errors='coerce')
times = df['date'].replace({'(\d+)\s+min': '00:\\1:00',
                             '\s+hrs': ':00:00'}, regex=True)
df['times'] = pd.to_timedelta(times, errors='coerce')

df = df.sort_values(['times','date1'])
print (df)

    Score    date  term      date1    times
6      34   3 min     2        NaT 00:03:00
9     536  11 min     1        NaT 00:11:00
3      15   1 hrs     2        NaT 01:00:00
10     53   2 hrs     1        NaT 02:00:00
8     101   7 hrs     1        NaT 07:00:00
1      47   1 Feb     1 1900-02-01      NaT
0      72   3 Feb     1 1900-02-03      NaT
7      26   3 Feb     3 1900-02-03      NaT
5     153   4 Feb     3 1900-02-04      NaT
2     119   6 Feb     1 1900-02-06      NaT
4      33   7 Feb     1 1900-02-07      NaT
11     20  11 Feb     3 1900-02-11      NaT

关于python - 使用字符串日期对 pandas csv 列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60238202/

相关文章:

python - 基于每个组在 pandas 列中填充值的高效而优雅的方法

python - 找到一列的重复行,然后添加其他列的相应行

python - 将列数据从一个数据帧转置到另一个数据帧

python - 如何实现自动化标签

python - 需要帮助格式化 .txt 文件并将其放入数据框中

python - Python 中的邻接表创建

python - Django:跨三个模型进行注释

#ifdef DEBUG 的 Python 等效项

python - 带有处理队列的中断系统调用

python - 由于没有考虑后面的字符,str.match 不完全匹配