2016-12-14 117 views
1

我有成千上萬的包含多個條目,多人行的數據幀:熊貓.idxmin()拋出ValueError異常與GROUPBY

Name  ID   Date 
0 Person A 9999249491 2015-12-28 
1 Person A 9999249491 2015-12-29 
2 Person A 9999293341 2015-12-30 
3 Person B 9999293341 2015-12-30 
4 Person B 9999293341 2015-12-31 

我想找到的最低Date指數使用每個人groupby()idxmin()但我接收當我執行以下一個ValueError消息:

df.groupby(['Name','ID'])['Date'].idxmin() 

返回以下錯誤:

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-153-ef18ad96a6d8> in <module>() 
     3 t = df[['Name','ipg_id','Date']] 
     4 
----> 5 t.groupby(['Name','ipg_id'])['Date'].idxmin() 

C:\Users\nickb\Anaconda2\lib\site-packages\pandas\core\groupby.pyc in idxmin(self, axis, out, skipna) 

C:\Users\nickb\Anaconda2\lib\site-packages\pandas\core\groupby.pyc in wrapper(*args, **kwargs) 
    548                *args, **kwargs) 
    549      except (AttributeError): 
--> 550       raise ValueError 
    551 
    552   return wrapper 

ValueError: 

我可以,但是,執行min()方法沒有任何問題:

df.groupby(['Name','ID'])['Date'].min() 

回報:

Name  ID 
Person A 9999249491 2015-12-28 
Person B 9999293341 2015-12-30 

我似乎無法找出原因我我收到了ValueError消息。任何獲得idxmin()工作的線索都會很棒。謝謝。

回答

2

我覺得你需要之前設置列Date爲datetime:

df.Date = pd.to_datetime(df.Date) 
+0

我認爲同樣的事情很好,但一切都在'Date'列是'datetime'格式:'設置([類型(項目)for df.Date])'produce:'{datetime.date}' – NickBraunagel

+0

so df.Date.dtypes is'datetime'? – jezrael

+0

'df.Date.dtypes'產生:'dtype('O')'。 'set([df.Date]中item的[type(item))''產生:'{datetime.date}' – NickBraunagel