我想将一个数据帧分成多个块。我创建了一个函数,该函数能够将数据帧拆分为相等大小的块,但是无法弄清楚如何按组拆分。
每个数据框拆分必须包括分组变量的所有实例,我希望可以灵活地包含多少个组(因为它们相对较小)。
示例数据框:
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))
帮助表示感谢!
答案 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