当某些值相等时,如何在pandas数据框中找到最小值

时间:2016-03-02 17:01:17

标签: pandas

我有一个类似这样的数据框:

PatientID       Date 
1               01/01/2011
3               03/03/2012
3               15/01/2015
1               01/01/2011

link to better representation

我希望找到每个PatientID的最短日期,这个:

enter image description here

我正在做以下事情:

min_date = patient_df.groupby("PatientID", as_index=False)["Date"].min()

这似乎有效,但对于PatientID == 1,它会返回NaN。这是因为所有相关行的PatientID == 1日期相同吗?

如果您比较两个值并且它们是相同的,那么为什么它不会将该值作为最小值返回,因为没有值更低?

对这位新手的帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

当我尝试重现时,它对我来说也很好。但是,我想可能问题是数据类型没有被正确捕获。

以下是一个解决方案,它会创建另一个列,以确保正确的日期时间格式。

import pandas as pd
patient_df = pd.read_clipboard()
patient_df['proper date'] = pd.to_datetime(tmp['Date'], format='%d/%m/%Y')
min_date = patient_df.groupby("PatientID", as_index=False)["proper date"].min()

min_date

output