gpt4 book ai didi

python - groupby 并返回前 n 组的所有行

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:01 25 4
gpt4 key购买 nike

我有一个像下面这样的 Pandas 数据框

>>> 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>

如何获取前 2 组中的所有行。在上面的样本 df 中,第 1 组为 1499351400,第 2 组为 1499351400,第 3 组为 1609425000

预期输出:当组数 =2 时

       0      1       2          3   4           5                      6
0 35000 26009 OPTIDX BANKNIFTY XX 1499351400 BANKNIFTY1770621000CE
1 35001 26009 OPTIDX BANKNIFTY XX 1499351400 BANKNIFTY1770621000PE
4 35004 26009 OPTIDX BANKNIFTY XX 1499956200 BANKNIFTY1771321100CE

更新 1:尝试@jezrael 之后

>>> 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'

补充:是否可以不用 pandas(只有 python),我可能并不总是能找到装有 pandas 的机器。谢谢

最佳答案

如果您不能使用ngroup,只需将元素排序为'dense' 并使用它索引到df:

In [24]: df.loc[df[5].rank(method='dense') <= 2]
Out[24]:
0 1 2 3 4 5 6
0 35000 26009 OPTIDX BANKNIFTY XX 1499351400 BANKNIFTY1770621000CE
1 35001 26009 OPTIDX BANKNIFTY XX 1499351400 BANKNIFTY1770621000PE
4 35004 26009 OPTIDX BANKNIFTY XX 1499956200 BANKNIFTY1771321100CE

这是有效的,因为 rank(method='dense') 为我们提供了每个看到的数字的排序排名:

In [25]: df[5].rank(method='dense')
Out[25]:
0 1.0
1 1.0
2 3.0
3 3.0
4 2.0
Name: 5, dtype: float64

(P.S. 巧合的是,我同时添加了ngroupmethod='dense',所以这个问题让我很高兴。:-)

关于python - groupby 并返回前 n 组的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44885108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com