Выбор групп, выбранных функцией groupby - PullRequest
0 голосов
/ 05 октября 2018

Мой фрейм данных:

 df1

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

Я сформировал каждую группу с помощью функции groupby.

Мне нужно извлечь данные, используя номер группы.

Мойжелаемый выход.

In: получить группу 0 out:

   ordercode      quantity
       A             1
       B             3

или

 group     ordercode      quantity
 0            A             1
              B             3

Любое предложение будет оценено.

Ответы [ 3 ]

0 голосов
/ 05 октября 2018
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
0 голосов
/ 05 октября 2018

Вы можете использовать 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
0 голосов
/ 05 октября 2018

Использовать 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)
...