【问题标题】:Sorting data frame according to year and month根据年月对数据框进行排序
【发布时间】:2021-08-29 13:15:40
【问题描述】:

我有比特币历史数据。我将 “日期” 列拆分为 “年月日和小时”,因为我想根据小时对数据进行排序[“因为它是每小时基础数据”]。数据上升到 2021-12 即 12 月 [“日期从每月 1 到 30”]。我想将这些数据进一步排序为:- “2019-Jan, 2020-Jan 20201-Jan” 然后“2019-Feb,2020-Feb, 2021-Feb” 很快

Year Month DAy Hour open high low close
2019 1 1 0 3700.05 3725.58 3698.83 3715.09
2019 2 1 0 3700.05 3725.58 3698.83 3715.09
2019 3 1 0 3700.05 3725.58 3698.83 3715.09
2019 4 1 0 3700.05 3725.58 3698.83 3715.09
2019 5 1 0 3700.05 3725.58 3698.83 3715.09

可以通过说我已拆分“日期”列来完成此操作吗?如果是,请就如何实现这一点提出任何建议

原来的“DATE”列如下:- 2019-01-01T00:00:00Z

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以先对Month 进行排序,然后再对Year 进行排序:

    >>> df.sort_values(["Month", "Year"], ignore_index=True)
    
       Year  Month  DAy  Hour     open     high      low    close
    0  2019      1    1     0  3700.05  3725.58  3698.83  3715.09
    1  2020      1    1     0  3700.05  3725.58  3698.83  3715.09
    2  2019      2    1     0  3700.05  3725.58  3698.83  3715.09
    3  2020      2    1     0  3700.05  3725.58  3698.83  3715.09
    4  2019      3    1     0  3700.05  3725.58  3698.83  3715.09
    

    (将您的数据框也更改为显示 2020 年)。

    【讨论】:

    • 但这并没有将其排序为 2019jan 2020jan 2021jan 等等。它只是在 2019 年 1 月、2 月......直到 2020 年和 20201 年的 12 月。我不想那样排序。
    • @HemanthGirimath 第一行是“2019, 1” 第二行是“2020, 1”,所以它的排序就像 2019jan, 2020jan,不是吗?
    • @HemanthGirimath 我添加了一个reset_index 使左边的数字变为0,1,....也许这造成了它没有排序的印象。你现在说什么?
    • 嗨@HemanthGirimath,它现在有效吗?如果没有,您能否提供反馈,以便可以改进或删除答案?
    • 抱歉,我只是想确认一下,回复晚了。是的,它确实对时间和建议有用。但我不明白仅使用 sort_values 是如何工作的,请您向我解释一下。在过去的 2 天里,我一直在考虑如何实现这一目标,这很简单。 df.sort_values(["Month", "Year"]).reset_index(drop=True) 这行代码对任何事情都没有任何条件它默认做到了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多