将数据帧分成分组的块

时间:2018-07-18 21:52:11

标签: python pandas

我想将一个数据帧分成多个块。我创建了一个函数,该函数能够将数据帧拆分为相等大小的块,但是无法弄清楚如何按组拆分。

每个数据框拆分必须包括分组变量的所有实例,我希望可以灵活地包含多少个组(因为它们相对较小)。

示例数据框:

A  1
A  2
B  3
C  1
D  9
D  10

目标拆分(至少包括两组):

拆分1:

A  1
A  2
B  3

拆分2:

C  1
D  9
D  10

如果有帮助,我当前的功能如下:

def split_frame(sequence, size=10000):
    return (sequence[position:position + size] for position in range(0, len(sequence), size))

帮助表示感谢!

1 个答案:

答案 0 :(得分:3)

适用于Python 2和3:

df = pd.DataFrame(data=['a', 'a', 'b', 'c', 'a', 'a', 'b', 'v', 'v', 'f'], columns=['A']) 

def iter_by_group(df, column, num_groups):
    groups = []
    for i, group in df.groupby(column):
        groups.append(group)
        if len(groups) == num_groups:
            yield pd.concat(groups)
            groups = []
    if groups:
        yield pd.concat(groups)

for group in iter_by_group(df, 'A', 2):
    print(group)

A
0  a
1  a
4  a
5  a
2  b
6  b

A
3  c
9  f

A
7  v
8  v