【问题标题】:Select first or last n groups after applying "group by"应用“分组依据”后选择第一个或最后 n 个组
【发布时间】:2015-09-10 14:44:54
【问题描述】:

我想在逐列应用分组后提取特定数量的组。例如前 2 或 3 组。

我有一个数据框:

id 性别值 1 英尺 1123 1 英尺 10 2 米 123 2 米 154 2米165 3 米 654 3米987 4 英尺 7654 4 英尺 7654 4 英尺 7654 ... ... ....

我想要这样的东西

id 性别值 2 米 123 2 米 154 3 米 654 3米987 ... .. ...

我的代码是:

dtFrame2 = dtFrame.groupby('id').head(2)
dtFrameMale = dtFrame2.loc[dtFrame2.gender=='male']
temp = maleGroups.filter(lambda x: len(x) == 2)

最后一条语句给了我所有两行的组,但之后我想提取前两个、三个或 n 个组。

【问题讨论】:

    标签: python python-2.7 numpy pandas


    【解决方案1】:

    类似的东西

    In [60]: s = df[df['gender'] == 'm'].groupby('id').size()
    
    In [61]: s.name = 'size'
    
    In [62]: df2 = df.join(s, on='id')
    
    In [63]: df2[df2['size'] == 2]
    Out[63]: 
       id gender  value  size
    5   3      m    654     2
    6   3      m    987     2
    

    【讨论】:

    • 感谢您的回答。但是我想做一个补充,例如,如果有很多这样的实例,那么我可以通过这个语句 df2[df2['size'] == 2][:2*numberofInstances] 得到它。
    猜你喜欢
    • 2012-12-07
    • 2015-11-15
    • 2013-10-22
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多