Определение размера домохозяйства с групповым - PullRequest
0 голосов
/ 31 октября 2019

У меня есть фрейм данных с отдельными лицами и их идентификаторами домохозяйств, и я хотел бы создать переменную, которая содержит размер домохозяйства.

Я использую Python 3.7. Я попытался использовать функцию groupby в сочетании с функцией размера (я тоже подсчитал). Идея заключается в том, что для каждого наблюдения об отдельном человеке я хочу подсчитать в кадре данных количество наблюдений с одним и тем же идентификатором домохозяйства и сохранить его в новой переменной.

Учтите, что каждое наблюдение имеет идентификатор домохозяйства (hh_id) и что я хотел бы сохранить размер домохозяйства в переменной hh_size.

Я попробовал следующее:

df['hh_size'] = df.groupby('hh_id').size

Я ожидаю, что переменная hh_size будет содержать для каждого наблюдения размер домохозяйства. Тем не менее, я получаю столбец только с нан.

Когда я использую только df.groupby('hh_id').size, я получаю ожидаемый результат, но мне не удается сохранить его в переменной hh_size.

For example: 

 individual    hh_id  hh_size
  1             1      2
  2             1      2
  3             2      1
  4             3      1  


Thanks, 
Julien

1 Ответ

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

Если я понимаю, вы должны преобразовать его в новый DataFrame - .to_frame(name='hh_size') - и вам, возможно, придется сбросить индекс.

import pandas as pd

df = pd.DataFrame({
    'individual': [1,1,2,2,3,4],
    'hh_id':      [1,1,1,1,2,3],
})

sizes = df.groupby(['individual', 'hh_id']).size()

new_df = sizes.to_frame(name='hh_size').reset_index()

print(new_df)

Результат:

   individual  hh_id  hh_size
0           1      1        2
1           2      1        2
2           3      2        1
3           4      3        1
...