【问题标题】:How can I sort DataFrame by date in Python?如何在 Python 中按日期对 DataFrame 进行排序?
【发布时间】:2018-05-18 10:33:53
【问题描述】:

我尝试使用df.sort_values(by='date') 按日期对下面显示的数据框进行排序,但它不起作用。任何想法我如何才能确保它正确排序?

     symbol        date     open    close     high      low
0      GOOG  2007-01-03   232.77   233.56   238.09   230.32
1      GOOG  2007-01-05   241.01   243.35   243.51   238.82
2      GOOG  2007-01-04   234.27   241.39   241.73   233.94

...
2692   GOOG  2017-11-30  1022.37  1021.41  1028.49  1015.00
2693   GOOG  2017-11-29  1042.68  1021.66  1044.08  1015.65
2694   GOOG  2017-12-01  1015.80  1010.17  1022.49  1002.02

【问题讨论】:

  • 我没有投反对票,但请注意,“它不起作用”不是一个充分的问题规范。请阅读“It’s not working” is not helpful
  • @juanpa.arrivillaga 我只想知道如何排序,我只提到df.sort_values(by='date') 不起作用。我不知道为什么。
  • 好的。看,如果我要回答这个问题,我会说“只使用df.sort_values”,但显然,“不起作用”,嗯,如何不起作用?提供minimal reproducible example
  • df.sort_values(by='date') 返回排序后的 DF,但它没有就地排序。所以要么使用:df = df.sort_values(by='date') 要么 df.sort_values(by='date', inplace=True)
  • @MaxU 我认为这是个问题。在我看来,df = df.sort_values(by='date') 工作正常。如果您添加答案,我会接受。

标签: python python-3.x pandas sorting dataframe


【解决方案1】:

df.sort_values() 返回排序后的 DF,但没有就地排序。

所以要么使用:

df = df.sort_values(by='date') 

df.sort_values(by='date', inplace=True)

【讨论】:

    【解决方案2】:

    试试

    df['Date']=pd.to_datetime(df.Date)
    df.sort_values(['Date'])
    

    【讨论】:

    • AttributeError: 'DataFrame' object has no attribute 'sort'
    【解决方案3】:

    如果您有如下这样的数据框:

    df = pd.DataFrame({'col1' : ['A', 'A', 'B', np.nan, 'D', 'C'],
    'col2' : [2, 1, 9, 8, 7, 4],
    'col3': [0, 1, 9, 4, 2, 3], })
    

    这是你的排序方式:

    df = df.sort_values(by=['col1'])
    

    stackoverflow 上的解决方案类似的问题: how to sort pandas dataframe from one column 熊猫参考: http://pandas.pydata.org/pandas-docs/version/0.19.2/generated/pandas.DataFrame.sort.html

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 2010-12-18
      • 2019-09-21
      • 2012-04-12
      • 2021-11-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      相关资源
      最近更新 更多