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

时间:2017-03-22 22:49:32

标签: python sorting pandas

采用这个简单的数据框:

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

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

  1. 使用pd.to_datetime(df['date'])
  2. 转换日期
  3. 使用.sort_values('date')
  4. 对数据框进行排序
  5. 将日期转换回.strftime('%-m/%-d/%Y')
  6. 而是做这样的事情(当然,这不起作用):

    df.apply(pd.to_dataframe(df['date']).sort_values(by = 'date', inplace = True)
    

    输出:

             date  kw
    2  10/15/2016   1
    0   1/15/2017   2
    1   2/15/2017   3
    3   3/15/2017   4
    

    这是可能的,还是我应该坚持三步过程?

2 个答案:

答案 0 :(得分:3)

您可以使用.assign()方法:

In [22]: df.assign(x=pd.to_datetime(df['date'])).sort_values('x').drop('x', 1)
Out[22]:
         date  int
2  10/15/2016    1
0   1/15/2017    2
1   2/15/2017    3
3   3/15/2017    4

答案 1 :(得分:3)

--jars&#39; s numpy返回排序数组所需的排列。我们可以使用argsort来利用它。因此,通过使用iloc转换日期,然后抓取值并调用pd.to_datetime,我们已经完成了对原始数据框进行排序所需的所有操作,而无需更改其任何列。<\ n / p>

argsort