如何使用python groupby或.DataFrameGroupBy对象创建唯一的组合列表

如何使用python groupby或.DataFrameGroupBy对象创建唯一的组合列表,python,python-2.7,pandas,Python,Python 2.7,Pandas,是否有更有效的方法使用pandas groupby或pandas.core.groupby.DataFrameGroupBy对象来创建唯一的列表、系列或数据帧,其中我需要N列中的2列的唯一组合。例如,如果我有列:Date、Name、Item Purchased,我只想知道唯一的名称和日期组合,这很好: y = x.groupby(['Date','Name']).count() y = y.reset_index()[['Date', 'Name']] 但我觉得应该有一种更干净的使用方法 y

是否有更有效的方法使用pandas groupby或pandas.core.groupby.DataFrameGroupBy对象来创建唯一的列表、系列或数据帧,其中我需要N列中的2列的唯一组合。例如,如果我有列:Date、Name、Item Purchased,我只想知道唯一的名称和日期组合,这很好:

y = x.groupby(['Date','Name']).count()
y = y.reset_index()[['Date', 'Name']]
但我觉得应该有一种更干净的使用方法

y = x.groupby(['Date','Name'])
但是y.index给了我一个错误,尽管y.keys有效。这实际上让我问了一个一般性的问题,pandas.core.groupby.DataFrameGroupBy对象方便做什么

谢谢

这里不需要使用——事实上也不应该使用——groupby。您可以使用来获取唯一的行:

x.drop_duplicates(['Date','Name'])
演示:


你不应该使用groupby,因为

  • x.groupby(['Date','Name']).count()
    对 每个组中的元素数,但不使用计数——这是一个浪费的计算
  • x.groupby(['Date','Name']).count()
    在以下情况下引发AttributeError
    x
    只有
    日期
    名称
  • drop\u duplicates
    在这方面要快得多

  • ,例如计算每组中的元素数,或计算每组的一些统计数据(如总和或平均数等)。

    您需要什么
    y.keys
    没有给您的信息?“y.index给我一个错误,”请显示错误信息?理想情况下,使用一个示例数据帧来演示它。
    In [156]: x = pd.DataFrame({'Date':[0,1,2]*2, 'Name':list('ABC')*2})
    
    In [158]: x
    Out[158]: 
       Date Name
    0     0    A
    1     1    B
    2     2    C
    3     0    A
    4     1    B
    5     2    C
    
    In [160]: x.drop_duplicates(['Date','Name'])
    Out[160]: 
       Date Name
    0     0    A
    1     1    B
    2     2    C