首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据列的唯一值将python数据分解为等号。

根据列的唯一值将python数据分解为等号。
EN

Stack Overflow用户
提问于 2017-05-10 13:34:37
回答 2查看 382关注 0票数 0

我的dataframe df看起来如下所示:

代码语言:javascript
复制
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个不同的数据格式,这样每个dataframe都有大约相同的唯一ids。

我试着做以下几件事:

代码语言:javascript
复制
ids =df.id.unique()
ids_in_split =np.array_split(ids,n)

这将创建df的每个拆分中应该存在的in的拆分。如何使用ids_in_split拆分原始df?任何其他更有效的方法也是值得欢迎的。

为预期成果编辑:

假设我想将df分解为n =2,它们应该是这样的:

代码语言:javascript
复制
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

在上面的输出中,两个拆分都有相同数量的唯一iDs的所有记录。

EN

回答 2

Stack Overflow用户

发布于 2017-05-10 14:16:13

代码语言:javascript
复制
>>> 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‘进行分组,然后将分组数据帧解压缩为每个组的一个元组。元组的第二项是数据帧。

代码语言:javascript
复制
>>> 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'>
票数 2
EN

Stack Overflow用户

发布于 2017-05-10 14:18:52

不清楚您正在搜索的输出类型,这里有一个可能的解释和结果:

代码语言:javascript
复制
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列来获取数据格式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43894068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档