Имя столбца в кадре данных pandas, полученное в результате группового - PullRequest
0 голосов
/ 14 мая 2018

У меня есть следующий код:

import pandas as pd
import numpy as np
df = pd.DataFrame({'clif_cod' : [1,2,3,3,4,4,4],
               'peds_val_fat' : [10.2, 15.2, 30.9, 14.8, 10.99, 39.9, 54.9],
               'mes' : [1,2,4,5,5,6,12],
               'ano' : [2016, 2016, 2016, 2016, 2016, 2016, 2016]})

vetor_valores = df.groupby(['mes','clif_cod']).sum()

, который дает мне этот вывод:

               ano         peds_val_fat
mes clif_cod                    
1   1         2016         10.20
2   2         2016         15.20
4   3         2016         30.90
5   3         2016         14.80
    4         2016         10.99
6   4         2016         39.90
12  4         2016         54.90

Как выбрать строки на основе mes и clif_cod?

Когда я делаю список (df), я получаю только ano и peds_val_fat.

Ответы [ 4 ]

0 голосов
/ 14 мая 2018

Используйте параметр axis в .loc:

vetor_valores.loc(axis=0)[1,:]

Выход:

               ano  peds_val_fat
mes clif_cod                    
1   1         2016          10.2
0 голосов
/ 14 мая 2018

Используя pd.IndexSlice

vetor_valores.loc[[pd.IndexSlice[1,1]],:]
Out[272]: 
               ano  peds_val_fat
mes clif_cod                    
1   1         2016          10.2
0 голосов
/ 14 мая 2018

У вас есть фрейм данных с двухуровневым MultiIndex.Используйте оба значения для доступа к строкам, например, vetor_valores.loc[(4,3)].

0 голосов
/ 14 мая 2018

IIUC, вы можете просто передать аргумент as_index=False вашей группе.Затем вы можете получить к нему доступ, как к любому другому фрейму данных

vetor_valores = df.groupby(['mes','clif_cod'], as_index=False).sum()

>>> vetor_valores
   mes  clif_cod   ano  peds_val_fat
0    1         1  2016         10.20
1    2         2  2016         15.20
2    4         3  2016         30.90
3    5         3  2016         14.80
4    5         4  2016         10.99
5    6         4  2016         39.90
6   12         4  2016         54.90

. Для доступа к значениям вы можете использовать iloc или loc, как если бы вы использовали любой фрейм данных:

# Select first row:
vetor_valores.iloc[0]
...

Кроме того, если вы уже создали свою группу и не хотите возвращаться и заново создавать ее, вы можете сбросить индекс, результат будет идентичным.

vetor_valores.reset_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...