Доступ к функции Pandas groupby () - PullRequest
0 голосов
/ 19 октября 2019

У меня есть нижеприведенный фрейм данных после выполнения следующих действий:

train_X = icon[['property', 'room', 'date', 'month', 'amount']]
train_frame = train_X.groupby(['property', 'month', 'date', 'room']).median()
print(train_frame)

                          amount
property month date room          
1        6     6    2     3195.000
               12   3     2977.000
               18   2     3195.000
               24   3     3581.000
               36   2     3146.000
                    3     3321.500
               42   2     3096.000
                    3     3580.000
               54   2     3195.000
                    3     3580.000
               60   2     3000.000
               66   3     3810.000
               78   2     3000.000
               84   2     3461.320
                    3     2872.800
               90   2     3461.320
                    3     3580.000
               96   2     3534.000
                    3     2872.800
               102  3     3581.000
               108  3     3580.000
               114  2     3195.000

Моя цель состоит в том, чтобы отследить среднее значение на основе (свойство, месяц,дата, номер) Я сделал это:

big_list = [[property, month, date, room], ...]
test_list = [property, month, date, room]

if test_list == big_list:
    #I want to get the median amount wrt to that row which matches the test_list

Как мне это сделать?

То, что я сделал, попробовал следующее ...

count = 0
test_list = [2, 6, 36, 2]

for j in big_list:
    if test_list == j:
        break

    count += 1

Сейчаспосле получения подсчета, как мне получить доступ к срединному количеству по отсчету в датафрейме? Есть ли у них способ доступа к фрейму данных по индексу?

Обратите внимание:

  1. big_list - это список списков, где каждый список [свойство, месяц, дата, комната]из приведенного выше фрейма данных

  2. test_list - это входящий список, который будет сопоставлен с большим_списком в случае, если это так.

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

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

Посмотрите на:

A=pd.DataFrame([[5,6,9],[5,7,10],[6,3,11],[6,5,12]],columns=(['lev0','lev1','val']))

Тогда вы сделали:

test=A.groupby(['lev0','lev1']).median()

Можно, например, получить доступ к медиане для группы lev0 = 6 и lev1 = 1через:

test.loc[6,5]
0 голосов
/ 21 октября 2019

Отвечая на последний вопрос: Есть ли у них способ доступа к фрейму данных по индексу?

Конечно, есть - вы должны использовать df.iloc или loc, если вы хотите получить более чистопо целому числу (я полагаю, что это ситуация) - вы должны использовать 'iloc' или, например, индекс типа строки - тогда вы можете использовать loc.

Документация: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html

Редактировать:Возвращаясь к вопросу. Тогда я предполагаю, что сумма - это ваша медиана, которую вы искали. Вы можете использовать метод reset_index () для сгруппированного фрейма данных, например

train_frame_reset = train_frame.reset_index()

, а затем снова получить доступ к именам столбцов, поэтому вам следует выполнить следующее (предполагая, что j является индексом найденной строки):

train_frame_reset.iloc[j]['amount'] <- will give you median
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...