Python 将数据帧拆分为分组块

Python 将数据帧拆分为分组块,python,pandas,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=10

我想把一个数据帧分割成块。我已经创建了一个函数,它能够将数据帧分割成大小相等的块,但是我不知道如何按组分割

数据帧的每个分割都必须包含一个分组变量的所有实例,我希望能够灵活地包含多少组,因为它们相对较小

数据帧示例:

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))

谢谢你的帮助

适用于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

在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

我没弄错你的问题吧?这就是你要的吗?我想是的!只是测试它是否保留了组-每个数据帧块必须包含组的每个实例,这是很重要的。我希望这在问题中是清楚的。谢谢你的帮助!所以在测试之后,我不认为它是。。。我已经运行了以下代码:my_df=pd.DataFramedata=['a','a','b','c','a','a','b','v','v','f'],columns=['a']def iter_DataFrameDataFrameDataFrameDataFrame,chunk_size:for chunk_index,df_chunk in dataframe.groupbynp.arangeldentFrameData//chunk_size:yield chunk_index,df_chunk for group in iter_dataframemy_df,2:printmy_df它似乎将其拆分为相等的数据帧,但我需要按组将其拆分为更小的数据块,我希望我说得清楚。当然,假设我们每个数据帧需要两个组,我希望有一个包含a、a、a、b、b的数据帧-一个包含c、v的数据帧,v和带有“f”的数据框给出了上述示例,我找到了一个更简单的解决方案并更新了答案。请试试这个。我没弄错你的问题吧?这就是你要的吗?我想是的!只是测试它是否保留了组-每个数据帧块必须包含组的每个实例,这是很重要的。我希望这在问题中是清楚的。谢谢你的帮助!所以在测试之后,我不认为它是。。。我已经运行了以下代码:my_df=pd.DataFramedata=['a','a','b','c','a','a','b','v','v','f'],columns=['a']def iter_DataFrameDataFrameDataFrameDataFrame,chunk_size:for chunk_index,df_chunk in dataframe.groupbynp.arangeldentFrameData//chunk_size:yield chunk_index,df_chunk for group in iter_dataframemy_df,2:printmy_df它似乎将其拆分为相等的数据帧,但我需要按组将其拆分为更小的数据块,我希望我说得清楚。当然,假设我们每个数据帧需要两个组,我希望有一个包含a、a、a、b、b的数据帧-一个包含c、v的数据帧,v和带有“f”的数据框给出了上述示例,我找到了一个更简单的解决方案并更新了答案。请试试这个。您想保留订单吗?假设您有4行A、9行B、5行C。您希望As与Cs分组吗?分组变量的所有实例在原始数据帧中都是连续的吗?顺序无关紧要,只要每个拆分都包含组的所有元素。当然,这些组的长度会有所不同。分组变量是我打算应用它的数据帧中的随机数ID。是否保留顺序?假设您有4行A、9行B、5行C。您希望As与Cs分组吗?分组变量的所有实例在原始数据帧中都是连续的吗?顺序无关紧要,只要每个拆分都包含组的所有元素。当然,这些组的长度会有所不同。分组变量是我打算应用它的数据帧中的随机数ID。