我有一个带有日期列的数据框:
data['Date']
0 1/1/14
1 1/8/14
2 1/15/14
3 1/22/14
4 1/29/14
...
255 11/21/18
256 11/28/18
257 12/5/18
258 12/12/18
259 12/19/18
但是,当我尝试从该列中获取最大日期时,我得到:
test_data.Date.max()
'9/9/15'
知道为什么会这样吗?
答案 0 :(得分:2)
很显然,该列的类型为object
。您应该尝试使用pd.to_datetime()
,然后执行max()
聚合器:
data['Date'] = pd.to_datetime(data['Date'],errors='coerce') #You might need to pass format
print(data['Date'].max())
答案 1 :(得分:0)
如果.max()
是datetime object,则将其理解为日期(如您所愿)。根据{{3}}的响应,尝试:
type(data['Date'][1])
如果它是日期时间对象,则返回以下内容:
pandas._libs.tslibs.timestamps.Timestamp
如果没有,您可以像这样使该列成为datatime对象:
data['Date'] = pd.to_datetime(data['Date'],format='%m/%d/%y')
format参数可确保您获得正确的格式。请参阅格式设置选项Seshadri的完整列表。
答案 2 :(得分:0)
您的日期可以存储为字符串。首先将列从字符串转换为日期时间。然后,max()应该可以工作。
test = pd.DataFrame(['1/1/2010', '2/1/2011', '3/4/2020'], columns=['Dates'])
Dates
0 1/1/2010
1 2/1/2011
2 3/4/2020
pd.to_datetime(test['Dates'], format='%m/%d/%Y').max()
Timestamp('2020-03-04 00:00:00')
可以使用.dt.date清除该时间戳:
pd.to_datetime(test['Dates'], format='%m/%d/%Y').dt.date.max()
datetime.date(2020, 3, 4)
to_datetime格式参数表python docs
熊猫to_datetime pandas docs