我有一个熊猫数据帧如下
>>> df.head()
0 1 2 3 4 5 6
0 35000 26009 OPTIDX BANKNIFTY XX 1499351400 BANKNIFTY1770621000CE
1 35001 26009 OPTIDX BANKNIFTY XX 1499351400 BANKNIFTY1770621000PE
2 35002 26000 OPTIDX NIFTY XX 1609425000 NIFTY20DEC10400CE
3 35003 26000 OPTIDX NIFTY XX 1609425000 NIFTY20DEC10400PE
4 35004 26009 OPTIDX BANKNIFTY XX 1499956200 BANKNIFTY1771321100CE
我想按第5列的顺序将这些分组,并返回前n个组,其中n可以作为变量。在
我做了df.sort_values(5).groupby([5])
我得到了<pandas.core.groupby.DataFrameGroupBy object at 0x2afc8d0>
如何获取前两组中的所有行。在上述样本中,组1为1499351400,组2为1499351400,组3为1609425000
预期输出:当所需组数=2时
^{pr2}$更新1:在尝试@jezrael's之后
>>> k2=k1[k1.groupby(5).ngroup() < 2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/python/2.7/lib/python2.7/site-packages/pandas/core/groupby.py", line 529, in __getattr__
(type(self).__name__, attr))
AttributeError: 'DataFrameGroupBy' object has no attribute 'ngroup'
另外:如果没有熊猫(只有python)也可以这样做吗,我可能并不总能找到带熊猫的机器。谢谢
如果不能使用
ngroup
,只需用'dense'
对元素进行排序,并使用它来索引df:这是因为
^{pr2}$rank(method='dense')
给了我们看到的每个数字的排序等级:(注:在一个奇怪的巧合中,我加了},所以这个问题让我很高兴。:-)
ngroup
和{将^{} (在} 一起使用:
0.20.2
中工作)与^{对于旧版本的pandas,使用一些hack-information隐藏在object
^{pr2}$grouper.group_info
中,因此按[0]
选择第一个数组:带^{} 的替代解决方案:
相关问题 更多 >
编程相关推荐