为什么 Pandas 的 max 函数不能正确返回最大日期?

4

我想从 DataFrame 的一列中获取最大日期,但结果是错误的?
我做错了什么?

df = pd.DataFrame.from_dict({'date':['31.12.2014', '03.10.2015','02.01.2013', '05.01.2013', '14.10.2015']})

df.date.max() 的结果是 '31.12.2014' 而不是 '14.10.2015',为什么?


2
似乎它正在将它们作为字符串进行排序,而不知道这些字符串表示日期? - canton7
pd.to_datetime(df['date'], errors='coerce', dayfirst=True).max() 这个函数可以完成这项任务。 - cs95
2个回答

3

首先将您的日期列转换为日期时间格式,然后检查最大或最小值。

import pandas as pd

df = pd.DataFrame.from_dict({'date':['31.12.2014', '03.10.2015','02.01.2013', '05.01.2013', '14.10.2015']})

# Convert to datetime format
df['date'] = pd.to_datetime(df['date'])

# Print max value
print(df['date'].max())

0
如果您希望将字符串作为日期时间对象进行比较,这应该会有所帮助。
df['date'].astype('datetime64[ns]').max()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接