我有一个堆叠系列,如下所示(日期表示为一个月的整数):
date issues size 1 issue1 1 issue2 2 issue3 1 issue4 6 issue5 1 ... 8 issue1 1 issue2 2 issue3 1 issue4 6 issue5 1
我可以通过
绘图来创建堆积条形图series.unstack().fillna(0)
但是我希望将问题数量限制为每个日期的前10名,因为目前有超过100个。这是我无法弄清楚的部分。任何帮助表示赞赏。
编辑:
以下是我的原始DataFrame的更清晰的内容。
date issues 0 1 issue1 1 1 issue2 2 1 issue3 3 1 issue1 4 1 issue3 5 2 issue1 6 2 issue2 7 2 issue3 ...
答案 0 :(得分:1)
您只能按applying to each group一个sort然后head返回大小合适的顶级对象。
在这里,我们只看前两个:
In [11]: top2_by_date = df.groupby('date').apply(lambda x: x.sort('size', ascending=False).head(2))
In [12]: top2_by_date
Out[12]:
date issues size
date
1 3 1 issue4 6
1 1 issue2 2
8 8 8 issue4 6
6 8 issue2 2
很烦我们在索引(as_index=False
doesn't stop this,for now)中有约会。
In [13]: top2_by_date.index = top2_by_date.index.droplevel(0)
In [14]: top2_by_date
Out[14]:
date issues size
3 1 issue4 6
1 1 issue2 2
8 8 issue4 6
6 8 issue2 2
使用value_counts
使用原始数据(没有尺寸列,您可以一次完成此操作):
In [21]: df.groupby('date').apply(lambda x: x['issues'].value_counts()[:2])
Out[21]:
date
1 issue3 2
issue1 2
2 issue2 1
issue3 1
dtype: int64
注意:如果存在平局,这将随意挑选。