我的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个不同的数据格式,这样每个dataframe都有大约相同的唯一ids。
我试着做以下几件事:
ids =df.id.unique()
ids_in_split =np.array_split(ids,n)这将创建df的每个拆分中应该存在的in的拆分。如何使用ids_in_split拆分原始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在上面的输出中,两个拆分都有相同数量的唯一iDs的所有记录。
发布于 2017-05-10 14:16:13
>>> 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'>发布于 2017-05-10 14:18:52
不清楚您正在搜索的输出类型,这里有一个可能的解释和结果:
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列来获取数据格式。
https://stackoverflow.com/questions/43894068
复制相似问题