采用这个简单的数据框:
df = pd.DataFrame({
'date':['1/15/2017', '2/15/2017','10/15/2016', '3/15/2017'],
'int':[2,3,1,4]
})
我想按日期对其进行排序,然后将其保存为CSV而不必:
pd.to_datetime(df['date'])
.sort_values('date')
.strftime('%-m/%-d/%Y')
而是做这样的事情(当然,这不起作用):
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
这是可能的,还是我应该坚持三步过程?
答案 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
' s numpy
返回排序数组所需的排列。我们可以使用argsort
来利用它。因此,通过使用iloc
转换日期,然后抓取值并调用pd.to_datetime
,我们已经完成了对原始数据框进行排序所需的所有操作,而无需更改其任何列。<\ n / p>
argsort