鉴于pandas DataFrame的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)
嗯,确实选择了我想要的行数,但是我不能在这个新对象上应用size()
方法。
print two_rows_each.size()
提出AttributeError: 'DataFrame' object has no attribute 'size'
虽然我可以在size()
原始群组中使用by_name
:
name
John 2
Tom 3
dtype: int64
我需要两个,从分组对象中选择X行,然后获取组的大小。
有什么建议吗?
答案 0 :(得分:1)
好的,我想我理解你,试试这个:
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的值;)