Python 2.7 根据列的唯一值将python数据帧拆分为相等的数字

Python 2.7 根据列的唯一值将python数据帧拆分为相等的数字,python-2.7,pandas,dataframe,Python 2.7,Pandas,Dataframe,我的数据帧df如下所示: id value 10 a 10 d 10 g 10 g 10 g 23 g 23 h 11 h 11 h 11 h 44 h 44 h 我想将此数据帧拆分为n个不同的数据帧,以便每个数据帧具有大约相等的唯一ID 我试着做如下的事情: ids =df.id.unique() ids_in_split =np.array_split(ids,n) 这将创建ID的拆分,这些ID应位于df的每个拆分中。如何使用拆分中的ID拆分原始df? 任何其

我的数据帧
df
如下所示:

id  value 
10  a
10  d
10  g
10  g
10  g
23  g
23  h
11  h
11  h
11  h
44  h
44  h
我想将此数据帧拆分为n个不同的数据帧,以便每个数据帧具有大约相等的唯一ID

我试着做如下的事情:

ids =df.id.unique()
ids_in_split =np.array_split(ids,n)
这将创建ID的拆分,这些ID应位于
df
的每个拆分中。如何使用拆分中的ID拆分原始df? 任何其他更有效的方法也值得欢迎

为预期结果进行编辑:

假设我想将df拆分为n=2,它们应该如下所示:

df1 =
id  value 
10  a
10  d
10  g
10  g
10  g
23  g
23  h

df2 = 
id  value 
11  h
11  h
11  h
44  h
44  h
在上述输出中,两个分割都具有相同数量的唯一ID的所有记录

>>> df = pd.DataFrame({'id':[10, 10, 10, 10, 10, 23, 23, 11, 11, 11, 44, 44], 
    'value': ['a', 'd', 'g', 'g', 'g', 'g', 'h', 'h', 'h', 'h', 'h', 'h']})
我们按“id”分组,然后将分组后的数据帧解压为每个组的元组。元组的第二项是数据帧

>>> df1, df2, df3, df4 = df.groupby('id')

>>> df1[1]
   id value
0  10     a
1  10     d
2  10     g
3  10     g
4  10     g

>>> type(df1[1])
<class 'pandas.core.frame.DataFrame'>
df1、df2、df3、df4=df.groupby('id') >>>df1[1] id值 0 10 a 110D 210克 3.10克 4.10克 >>>类型(df1[1]) 我们按“id”分组,然后将分组后的数据帧解压为每个组的元组。元组的第二项是数据帧

>>> df1, df2, df3, df4 = df.groupby('id')

>>> df1[1]
   id value
0  10     a
1  10     d
2  10     g
3  10     g
4  10     g

>>> type(df1[1])
<class 'pandas.core.frame.DataFrame'>
df1、df2、df3、df4=df.groupby('id') >>>df1[1] id值 0 10 a 110D 210克 3.10克 4.10克 >>>类型(df1[1])
不清楚您要搜索的输出类型,以下是可能的解释和结果:

df
Out[11]: 
    id value
0   10     a
1   10     d
2   10     g
3   10     g
4   10     g
...

df.reset_index()
Out[12]: 
    index  id value
0       0  10     a
1       1  10     d
2       2  10     g
3       3  10     g
4       4  10     g
...

df['split'] = df.reset_index().groupby('id')['index'].rank()


df.sort_values('split')
Out[17]: 
    id value  split
0   10     a    1.0
5   23     g    1.0
7   11     h    1.0
10  44     h    1.0
1   10     d    2.0
6   23     h    2.0
8   11     h    2.0
11  44     h    2.0
2   10     g    3.0
9   11     h    3.0
3   10     g    4.0
4   10     g    5.0

现在,您可以通过分组
拆分
列来获取数据帧。

如果不清楚要搜索的输出类型,下面是可能的解释和结果:

df
Out[11]: 
    id value
0   10     a
1   10     d
2   10     g
3   10     g
4   10     g
...

df.reset_index()
Out[12]: 
    index  id value
0       0  10     a
1       1  10     d
2       2  10     g
3       3  10     g
4       4  10     g
...

df['split'] = df.reset_index().groupby('id')['index'].rank()


df.sort_values('split')
Out[17]: 
    id value  split
0   10     a    1.0
5   23     g    1.0
7   11     h    1.0
10  44     h    1.0
1   10     d    2.0
6   23     h    2.0
8   11     h    2.0
11  44     h    2.0
2   10     g    3.0
9   11     h    3.0
3   10     g    4.0
4   10     g    5.0

现在,您可以通过分组
split
列来获取数据帧。

那么预期结果是什么?那么预期结果是什么?编辑以添加预期结果。抱歉造成混淆。已编辑以添加预期结果。为这一混乱道歉。