[英]Pandas: Sort dataframe by date string without converting
拿這個簡單的數據幀:
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'])
轉換日期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
這是可能的,還是我應該堅持三步過程?
numpy
的argsort
返回排序數組所需的排列。 我們可以利用iloc
來利用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
你可以使用.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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.