熊猫在日期时间栏中给我错误的最大日期?

时间:2020-02-04 19:05:28

标签: python pandas datetime

我有一个带有日期列的数据框:

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'

知道为什么会这样吗?

3 个答案:

答案 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