2016-03-02 45 views
0

我有一個數據幀像這樣一個熊貓數據幀:如何找到最小值時,一些值相等

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的日期是相同的嗎?

如果您比較兩個值並且它們相同,那麼爲什麼它不會將該值作爲最小值返回,因爲沒有更低的值?

幫助這個新手,將不勝感激。

謝謝

+0

我無法重現描述的問題,你有哪些大熊貓的版本? – jrjc

+0

對我來說工作正常 – sedavidw

+2

這是否實際上在_this sample_上失敗?如果沒有,請提供實際確實會導致失敗的樣本。 –

回答

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

+1

謝謝 - 我認爲這是問題所在。 –