簡體   English   中英

Pandas:按日期字符串對數據進行排序而不進行轉換

[英]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,而不必:

  1. 使用pd.to_datetime(df['date'])轉換日期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)

輸出:

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

這是可能的,還是我應該堅持三步過程?

numpyargsort返回排序數組所需的排列。 我們可以利用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM