【问题标题】:Sort pandas dataframe on string date without conversion [duplicate]对字符串日期的熊猫数据框进行排序而不进行转换[重复]
【发布时间】:2019-05-07 08:02:02
【问题描述】:

设置

我有一个数据框,其中包含一个带有日期字符串的列。

日期格式为日/月/年,例如2018 年 5 月 12 日。

test_df 数据框看起来像,

   date_created
0    05/12/2018
1    04/12/2018
2    04/12/2018
3    03/12/2018
4    02/12/2018
5    30/11/2018
6    30/11/2018
7    30/11/2018
8    30/11/2018
9    29/11/2018
10   02/12/2018
11   29/11/2018
12   29/11/2018

问题

我希望它按日期排序,这样我就有了,

   date_created
0    05/12/2018    
1    04/12/2018
2    04/12/2018
3    03/12/2018
10   02/12/2018    
4    02/12/2018
5    30/11/2018
6    30/11/2018
7    30/11/2018
8    30/11/2018
9    29/11/2018
11   29/11/2018
12   29/11/2018

但关注this example

test_df.sort_values(by='date_created', inplace=False, ascending=True)

给,

   date_created
4    02/12/2018
10   02/12/2018
3    03/12/2018
1    04/12/2018
2    04/12/2018
0    05/12/2018
9    29/11/2018
11   29/11/2018
12   29/11/2018
5    30/11/2018
6    30/11/2018
7    30/11/2018
8    30/11/2018

我如何在当月颠倒顺序?

【问题讨论】:

    标签: python pandas sorting datetime


    【解决方案1】:

    推荐的解决方案是将你的系列转换为datetime,然后排序:

    df['date_created'] = pd.to_datetime(df['date_created'], dayfirst=True)
    
    res = df.sort_values('date_created', ascending=False)
    
    print(res)
    
       date_created
    0    2018-12-05
    1    2018-12-04
    2    2018-12-04
    3    2018-12-03
    4    2018-12-02
    10   2018-12-02
    5    2018-11-30
    6    2018-11-30
    7    2018-11-30
    8    2018-11-30
    9    2018-11-29
    11   2018-11-29
    12   2018-11-29
    

    如果您坚持保留object dtype 系列,您可以然后在单独的操作中转换回字符串:

    res['date_created'] = res['date_created'].dt.strftime('%d/%m/%Y')
    

    【讨论】:

    • 太棒了! 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2021-07-03
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    相关资源
    最近更新 更多