DataFrameGroupBy中键、值的条件迭代

2024-06-28 20:02:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python(2.7)中有一个pandas(v0.12)数据帧data。我groupby()相对于A和{}列,形成groups类型的<class 'pandas.core.groupby.DataFrameGroupBy'>对象。在

我想循环遍历并将函数应用于groups中包含多行的数据帧。我的代码如下,这里的每个数据帧都是键、值对中的value

import pandas as pd        
groups = data.groupby(['A','B'])
len(groups)
>> 196320 # too large - will be slow to iterate through all
for key, value in groups:
   if len(value)>1:
      print(value)

由于我只对将函数应用于len(value)>1的值感兴趣,是否可以通过嵌入此条件来仅过滤和循环满足此条件的键值对来节省时间。我可以像下面这样做来确定每个value的大小,但是我不确定如何将这个聚合与原始的groups对象结合起来。在

^{pr2}$

我希望问题是清楚的,请让我知道如果需要澄清。在


Tags: 数据对象函数代码core类型pandasdata
1条回答
网友
1楼 · 发布于 2024-06-28 20:02:13

您可以将组的长度指定回列并按其值进行筛选:

data['count'] = data.groupby(['A','B'],as_index=False)['A'].transform(np.size)

之后,您可以:

^{pr2}$

如果是一次性操作,则跳过赋值:

    data[data.groupby(['A','B'],as_index=False)['A'].transform(np.size) > 1].groupby(['A','B']).apply(your_function)

相关问题 更多 >