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。