我希望在逐列应用后提取特定数量的组。例如前2或3组。
我有一个数据框:
id gender value 1 f 1123 1 f 10 2 m 123 2 m 154 2 m 165 3 m 654 3 m 987 4 f 7654 4 f 7654 4 f 7654 ... ... ....
我想要这样的东西
id gender value 2 m 123 2 m 154 3 m 654 3 m 987 ... .. ...
我的代码是:
dtFrame2 = dtFrame.groupby('id').head(2)
dtFrameMale = dtFrame2.loc[dtFrame2.gender=='male']
temp = maleGroups.filter(lambda x: len(x) == 2)
最后一个语句给了我所有有两行的组,但之后我想提取前两个,三个或n个组。
答案 0 :(得分: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