通过groupby功能选择组

时间:2018-10-05 08:43:00

标签: python pandas indexing pandas-groupby

我的数据框:

 df1

group     ordercode      quantity
 0            A             1
              B             3
 1            C             1
              E             2
              D             1

我通过groupby功能组成了每个小组。

我需要使用组号提取数据。

我想要的输出。

在:获取组0 退出:

   ordercode      quantity
       A             1
       B             3

 group     ordercode      quantity
 0            A             1
              B             3

任何建议将不胜感激。

3 个答案:

答案 0 :(得分:2)

使用DataFrame.xs,也可以使用参数drop_level=False

#if need remove original level

df1 = df.xs(0)
print (df1)
           quantity
ordercode          
A                 1
B                 3

#if avoid remove original level
df1 = df.xs(0, drop_level=False)
print (df1)
                 quantity
group ordercode          
0     A                 1
      B                 3

编辑:

dfs = [df1, df2, df3]
dfs = [x[x['group'] == 0] for x in dfs]
print (dfs)

答案 1 :(得分:2)

In [131]: df.loc[pd.IndexSlice[0,:]]
Out[131]:
           quantity
ordercode
A                 1
B                 3

In [130]: df.loc[pd.IndexSlice[0,:], :]
Out[130]:
                 quantity
group ordercode
0.0   A                 1
      B                 3

答案 2 :(得分:2)

您可以在指定列后使用GroupBy.get_group。这是一个演示:

df = pd.DataFrame({'A': ['foo', 'bar'] * 3,
                   'B': np.random.rand(6),
                   'C': np.arange(6)})

gb = df.groupby('A')

print(gb[gb.obj.columns].get_group('bar'))

     A         B  C
1  bar  0.523248  1
3  bar  0.575946  3
5  bar  0.318569  5