[英]Pandas groupby object filtering
我有一個熊貓數據幀
df.columns
Index([u’car_id’,u’color’,u’make’,u’year’)]
我想創建一個新的FILTERABLE對象,它具有每個組的數量(顏色,品牌,年份);
grp = df[[‘color’,’make’,’year’]].groupby([‘color’,’make’,’year’]).size()
這將返回這樣的東西
color make year count
black honda 2011 416
我希望能夠過濾它,但是當我嘗試這個時:
grp.filter(lambda x: x[‘color’]==‘black’)
我收到此錯誤
TypeError:'function'對象不可迭代
如何利用'groupby'對象來過濾掉行?
我認為你需要添加reset_index
,然后輸出是DataFrame
。 上次使用boolean indexing
:
df = df[['color','make','year']].groupby(['color','make','year'])
.size()
.reset_index(name='count')
df1 = df[df.color == 'black']
選項1
提前過濾
cols = ['color','make','year']
df[df.color == 'black', cols].grouby(cols).size()
選項2使用xs
作為索引橫截面
cols = ['color','make','year']
grp = df[cols].groupby(cols).size()
df.xs('black', level='color', drop_level=False)
要么
df.xs('honda', level='make', drop_level=False)
要么
df.xs(2011, level='year', drop_level=False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.