20

次のスニペットdataでは、pandas.DataFrameおよびindicesは の列のセットですdata。データをグループ化した後groupby、グループの ID に興味がありますが、サイズがしきい値 (たとえば 3) を超えるグループのみです。

group_ids=data.groupby(list(data.columns[list(indices)])).grouper.group_info[0]

では、グループの ID を知っていれば、サイズが 3 以上のグループを見つけるにはどうすればよいでしょうか。特定のサイズのグループの ID のみが必要です。

#TODO: filter out ids from group_ids which correspond to groups with sizes < 3 
4

1 に答える 1

37

size1 つの方法は、次のメソッドを使用することgroupbyです。

g = data.groupby(...)
size = g.size()
size[size > 3]

たとえば、ここではサイズ > 1 のグループは 1 つだけです。

In [11]: df = pd.DataFrame([[1, 2], [3, 4], [1,6]], columns=['A', 'B'])

In [12]: df
Out[12]:
   A  B
0  1  2
1  3  4
2  1  6 

In [13]: g = df.groupby('A')

In [14]: size = g.size()

In [15]: size[size > 1]
Out[15]:
A
1    2
dtype: int64

DataFrame を大規模なグループに限定することに関心がある場合は、filterメソッドを使用できます。

In [21]: g.filter(lambda x: len(x) > 1)
Out[21]:
   A  B
0  1  2
2  1  6
于 2013-07-30T11:15:25.697 に答える