Python 如何从每个组中获取行的子集
给定熊猫数据帧的groupby对象Python 如何从每个组中获取行的子集,python,group-by,pandas,Python,Group By,Pandas,给定熊猫数据帧的groupby对象by_name,我希望能够从每个组中选择n行 我本来希望.tail()函数可以完成它,但失败了 d = { 'name': ['Tom', 'John', 'Tom', 'Tom', 'John'], 'age': [18,54,27,44,12] } df = pd.DataFrame(d) by_name = df.groupby('name') two_rows_each = by_name.tail(2) 好的,它确实选择了我想要
by_name
,我希望能够从每个组中选择n行
我本来希望.tail()
函数可以完成它,但失败了
d = {
'name': ['Tom', 'John', 'Tom', 'Tom', 'John'],
'age': [18,54,27,44,12]
}
df = pd.DataFrame(d)
by_name = df.groupby('name')
two_rows_each = by_name.tail(2)
好的,它确实选择了我想要的行数,但是我不能在这个新对象上应用size()
方法
print two_rows_each.size()
引发AttributeError:“DataFrame”对象没有属性“size”
虽然我可以在原始groupbyby_name
上使用size()
:
name
John 2
Tom 3
dtype: int64
我需要两者,从分组对象中选择X行,然后再获取组的大小
有什么建议吗?好的,我想我理解你的意思,试试这个:
import pandas as pd
d = {
'name': ['Tom', 'John', 'Tom', 'Tom', 'John','Mike'],
'age': [18,54,27,44,12,90]
}
df = pd.DataFrame(d)
df1 = df.groupby('name').tail(2)
print df1.groupby('name').size()
刚刚添加了
Mike
,以在末尾至少获得一个不同的值2;) 您希望得到什么?一个groupby对象,每个组中只出现两次(给定上述代码),这样我就可以对其使用size()
方法。正如错误所述,没有size
,您是在追求shape
?为什么没有大小by_name
对象确实有大小,并且每个都相同se@nutship这并不影响数据帧没有size
属性或方法,您必须使用shape
,它们是完全不同的对象类型hanks,这似乎是我需要的。奇怪的是,我在代码后面得到了AssertionError()
,我必须检查是什么导致了这一点,稍后我会回来接受这一点。