从列表中确定最新日期



我正试图从存储在数据帧中的日期列表中确定最新日期。问题是,我不知道如何使用panda来比较日期时间元素列表。

从本质上讲,我正在努力做到以下几点。

给定这个数据集,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

如何用对Python真正有意义的东西来替换is-earlier-than

提前谢谢。

您可以使用datetime模块和带有reverse=true和key参数的sorted(iterable[, cmp[, key[, reverse]]])函数将字符串转换为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对应的datetime,根据格式解析。

如果Date列的数据类型为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')

相关内容

  • 没有找到相关文章

最新更新