2016-12-14 116 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