Pandas .idxmin()使用Groupby

时间:2016-12-14 15:53:42

标签: python pandas

我有一个包含数千行的数据框,其中包含多个人的多个条目:

    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

我想找到使用Dategroupby()的每个人的最低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()工作的任何线索都会很棒。谢谢。

1 个答案:

答案 0 :(得分:2)

我认为您需要将列Date设置为日期之前:

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