首页 文章

将数据帧拆分为分组块

提问于
浏览
1

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

数据帧的每次拆分 must include all instances of a grouping variable ,我都希望能够包含多少组的灵活性(因为它们相对较小) .

示例数据帧:

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 回答

  • 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
    

相关问题