Pandas:按日期字符串对数据帧进行排序而不进行转换

elP*_*tor 2 python sorting pandas

采用这个简单的数据框:

df = pd.DataFrame({
    'date':['1/15/2017', '2/15/2017','10/15/2016', '3/15/2017'], 
    'int':[2,3,1,4]
})
Run Code Online (Sandbox Code Playgroud)

我想按日期对其进行排序,然后将其保存到 CSV,而不必:

  1. 使用转换日期pd.to_datetime(df['date'])
  2. 使用对数据框进行排序.sort_values('date')
  3. 将日期转换回.strftime('%-m/%-d/%Y')

相反,做这样的事情(当然,这是行不通的):

df.apply(pd.to_dataframe(df['date']).sort_values(by = 'date', inplace = True)
Run Code Online (Sandbox Code Playgroud)

输出:

         date  kw
2  10/15/2016   1
0   1/15/2017   2
1   2/15/2017   3
3   3/15/2017   4
Run Code Online (Sandbox Code Playgroud)

这可能吗,还是我应该坚持三步流程?

piR*_*red 5

numpy'sargsort返回对数组进行排序所需的排列。我们可以利用这一点,使用iloc. 因此,通过使用转换日期pd.to_datetime,然后抓取值并调用,argsort我们已经完成了对原始数据帧进行排序所需的所有操作,而无需更改其任何列。

df.iloc[pd.to_datetime(df.date).values.argsort()]

         date  int
2  10/15/2016    1
0   1/15/2017    2
1   2/15/2017    3
3   3/15/2017    4
Run Code Online (Sandbox Code Playgroud)

  • 如果投反对票的人仍在寻找。让我知道您希望看到什么来说服您取消否决票。我总是渴望提高我的答案的质量。 (2认同)