【问题标题】:How to sort a column that have dates in a dataframe?如何对数据框中有日期的列进行排序?
【发布时间】:2020-08-07 07:58:59
【问题描述】:

我有一个这样的数据框:

    SEMANAS      HIDROLOGICAS        METEOROLOGICAS
 0  02042020    36.00583090379008   31.284418529316522
 1  05032020    86.91690962099126   77.01136731748973
 2  12032020    87.31778425655976   77.24180581323434
 3  19032020    59.2201166180758    54.57343110404338
 4  26032020    32.39795918367347   29.049238743116323 

我使用此代码将 df.SEMANAS 更改为 datetime

Semanas_Oper['SEMANAS']=pd.to_datetime(Semanas_Oper['SEMANAS'], format='%d%m%Y').dt.strftime('%d/%m/%Y')

 SEMANAS    HIDROLOGICAS    METEOROLOGICAS
 02/04/2020    36.01           31.28
 05/03/2020    86.92           77.01
 12/03/2020    87.32           77.24
 19/03/2020    59.22           54.57
 26/03/2020    32.4            29.05

但是 pd.to_datetime 没有对 df.SEMANAS 列的日期进行排序 你能告诉我如何对这些列进行排序。 02/04/2020 必须在最后一行。

【问题讨论】:

    标签: pandas sorting datetime


    【解决方案1】:

    您需要使用datetime64ns 格式对其进行排序,如果需要,将其改回dd/mm/yyyy

    df['SEMANAS'] = pd.to_datetime(df['SEMANAS'], format='%d%m%Y')
    df.sort_values(by=['SEMANAS'], inplace=True)
    df['SEMANAS'] = pd.to_datetime(df['SEMANAS'], format='%d%m%Y').dt.strftime('%d/%m/%Y')
    print(df)
    
          SEMANAS  HIDROLOGICAS  METEOROLOGICAS
    1  05/03/2020     86.916910       77.011367
    2  12/03/2020     87.317784       77.241806
    3  19/03/2020     59.220117       54.573431
    4  26/03/2020     32.397959       29.049239
    0  02/04/2020     36.005831       31.284419
    

    【讨论】:

      【解决方案2】:

      dt.strftime() 撤消日期时间转换并将您带回字符串。如果你对此进行排序,你将得到字典排序,而不是你想要的,因为你的格式是'%d/%m/%Y''%Y/%m/%d' 会很好)。

      working with dates in pandas 时,您应该保留 datetime64[ns] dtype。这是执行所有日期时间操作的最简单方法。仅当您需要移动到需要非常特定的字符串格式的其他库或文件输出时才使用.strftime

      df['SEMANAS'] = pd.to_datetime(df['SEMANAS'], format='%d%m%Y')
      df.dtypes
      #SEMANAS           datetime64[ns]
      #HIDROLOGICAS              object
      #METEOROLOGICAS            object
      
      df = df.sort_values('SEMANAS')
      #     SEMANAS       HIDROLOGICAS      METEOROLOGICAS
      #1 2020-03-05  86.91690962099126   77.01136731748973 
      #2 2020-03-12  87.31778425655976   77.24180581323434
      #3 2020-03-19   59.2201166180758   54.57343110404338 
      #4 2020-03-26  32.39795918367347  29.049238743116323 
      #0 2020-04-02  36.00583090379008  31.284418529316522
      

      【讨论】:

        猜你喜欢
        • 2011-09-08
        • 2022-09-27
        • 2018-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-08
        相关资源
        最近更新 更多