索引列表的groupby列表

时间:2019-07-22 16:59:44

标签: pandas numpy pandas-groupby

我有一个np列表。数组,表示熊猫数据框的索引。

我需要对索引进行分组,以获取每个数组的每个组

比方说,这就是df:

index values
0     2
1     3
2     2
3     2
4     4
5     4
6     1
7     4
8     4
9     4

这是np.arrays的列表:

[array([0, 1, 2, 3]), array([6, 7, 8])]

从这些数据中,我希望将2个没有循环操作的组作为单个groupby对象:

group1:

index values
0     2
1     3
2     2
3     2

group2:

index values
6     1
7     4
8     4

我再次强调,最终我需要获得一个groupby对象。

谢谢!

3 个答案:

答案 0 :(得分:1)

我仍然使用for循环来创建 <router-link to="/AAA">AAA</router-link> <router-link to="/BBB">BBB</router-link> <router-link to="/CCC">CCC</router-link> groupby

dict

答案 1 :(得分:1)

df=pd.DataFrame([2,3,2,2,4,4,1,4,4,4],columns=['values'])
df.index.name ='index'
l=[np.array([0, 1, 2, 3]), np.array([6, 7, 8])]

groups=[df.loc[pd.Series(l1)] for i,l1 in enumerate(l)]
groups

Out[3]:

[       values
 index        
 0           2
 1           3
 2           2
 3           2,        values
 index        
 6           1
 7           4
 8           4]

答案 2 :(得分:0)

这似乎是X-Y problem

l = [np.array([0,1,2,3]), np.array([6,7,8])]
df_indx = pd.DataFrame(l).stack().reset_index()
df_new = df.assign(foo=df['index'].map(df_indx.set_index(0)['level_0']))
for n,g in df_new.groupby('foo'):
    print(g)

输出:

   index  values  foo
0      0       2  0.0
1      1       3  0.0
2      2       2  0.0
3      3       2  0.0
   index  values  foo
6      6       1  1.0
7      7       4  1.0
8      8       4  1.0