2014-04-26 20 views
1

我試圖從存儲在我的數據框中的日期列表中確定最新日期。問題是我不知道如何比較使用熊貓的日期時間元素列表。確定列表中的最新日期

本質上,我試圖做到以下幾點。

鑑於此數據集,Dates(或類似的東西)

Date 
0 1985-4-5 
1 1985-2-9 
2 1983-2-2 
3 1998-1-12  

n=0 
while(n<4): 
    if Dates[n]['Date'] is-earlier-than Dates[n+1]['Date'] 
     latest=Dates[n+1]['Date'] 
    else: 
     latest=Dates[n]['Date'] 
    n=n+1 

我怎麼能代替is-earlier-than的東西,實際上是有意義到Python?

在此先感謝。

回答

2

如果您Date列D型datetime64[ns]的,那麼你可以使用max方法:

In [35]: df = pd.DataFrame({'Date':pd.to_datetime(['1985-4-5', '1985-2-9', '1983-2-2', '1998-1-12'])}) 
In [44]: df 
Out[44]: 
     Date 
0 1985-04-05 
1 1985-02-09 
2 1983-02-02 
3 1998-01-12 

[4 rows x 1 columns] 

In [45]: latest = df['Date'].max() 

In [46]: print(latest) 
1998-01-12 00:00:00 

如果您Date列組成的字符串,然後首先將它們轉換爲datetime64[ns]對象:

In [47]: df = pd.DataFrame({'Date':['1985-4-5', '1985-2-9', '1983-2-2', '1998-1-12']}) 

In [48]: df['Date'] = pd.to_datetime(df['Date']) 

In [49]: df['Date'].max() 
Out[49]: Timestamp('1998-01-12 00:00:00') 

如果你想修復前4個日期中的最大值,那麼你可以調用max方法之前切片系列:

In [51]: df['Date'][:4].max() 
Out[51]: Timestamp('1998-01-12 00:00:00') 
1

您可以使用datetime模塊,並具有反sorted(iterable[, cmp[, key[, reverse]]])功能=真實key參數修道院字符串轉換成DateTime對象,在零指數,你會得到下面的代碼最新日期檢查(閱讀評論):

>>> from datetime import datetime 
>>> dates = ['1985-4-5', '1985-2-9', '1983-2-2', '1998-1-12' ] 
>>> sorted(
... dates, # list of dates input 
... key = lambda d: datetime.strptime(d, '%Y-%m-%d'), 
...  # convert each string into date 
... reverse=True # for decreasing order 
...) 
['1998-1-12', '1985-4-5', '1985-2-9', '1983-2-2'] 
>>> sorted(
... dates, # list of dates input 
... key = lambda d: datetime.strptime(d, '%Y-%m-%d'), 
...  # convert each string into date 
... reverse=True # for decreasing order 
...)[0] 
'1998-1-12' # latest 

您還可以使用max(iterable[, key]))功能:

>>> max(dates, key= lambda d: datetime.strptime(d, '%Y-%m-%d')) 
'1998-1-12' 
>>> min(dates, key= lambda d: datetime.strptime(d, '%Y-%m-%d')) 
'1983-2-2' 

檢查classmethod datetime.strptime(date_string, format)¶返回date_string對應的日期時間,根據格式進行解析。