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