Python:迭代每个DataFrame组的最快方法

时间:2018-02-26 03:57:32

标签: python pandas dataframe pandas-groupby

我有一个数据框,可以分成多个组,执行功能,然后将这些组重新组合成一个数据帧。

问题是每列中的唯一元素的数量是不同的,这意味着,以下面的数据帧为例,我需要一个尝试,除了语句,因为对于Eg a1的某些分组,G不存在, b2,c2,d1不存在。

除了声明之外,在不需要尝试的情况下迭代所有这些组的最快方法是什么?

A  B   C  D
a1 b1 c1 d1
a1 b2 c2 d1
a2 b3 c3 d1
a2 b4 c4 d1

As = df.A.unique()
Bs = df.B.unique()
Cs = df.C.unique()
Ds = df.D.unique()

 for a, b, c, d in itertools.product(As, Bs, Cs, Ds):
     G = df.groupby(['A', 'B', 'C', 'D']).get_group((a,b,c,d))
     Some more code below....

1 个答案:

答案 0 :(得分:0)

您应该根据实际可用内容过滤a,b,c,d元组:

possible = set(itertools.product(As, Bs, Cs, Ds))
available = set(tuple(x) for x in df[['A', 'B', 'C', 'D']].unique())

for a, b, c, d in (possible & available):
    # ...