【发布时间】:2015-10-10 16:39:22
【问题描述】:
我正在试验 pandas 的 groupby 功能,特别是
gb = df.groupby('model')
gb.hist()
由于 gb 有 50 个组,结果非常混乱,我想只探索前 5 个组的结果。
我找到了如何使用groups 或get_group (How to access pandas groupby dataframe by key) 选择单个组,但没有找到如何直接选择多个组。
我能做的最好的就是:
groups = dict(list(gb))
subgroup = pd.concat(groups.values()[:4])
subgroup.groupby('model').hist()
有没有更直接的方法?
【问题讨论】:
-
选择前 n 个组有点含糊,也许您的意思是 如何将前 n 个组加入单个数据帧.. 类似的东西?另外,您想如何选择组?随机,还是根据群体人数等?
-
现在我只是按顺序选择它们,有点像使用 head() 或 tail() 只是为了了解数据的外观。我认为我的方法已经在单个数据框中加入了第一组,但这也是一个更有效的解决方案
-
您可以通过调用
gp.groups来获取组,请参阅:pandas.pydata.org/pandas-docs/stable/generated/… 您最好先过滤您的df,所以df_filt = df[df['model'].isin(df['model'].unique()[:5])]然后gb = df_filt.groupby('model')#rest of code 与之前