使用 groupby 确定家庭规模

Determining household size with groupby

我有一个包含个人及其家庭 ID 的数据框,我想创建一个包含家庭人数的变量。

我正在使用 Python 3.7。我尝试将 groupby 函数与大小(我也试过计数)函数结合使用。这个想法是针对每个关于个人的观察,我想在数据框中计算具有相同家庭 ID 的观察数量,并将其存储在一个新变量中。

考虑到每个观察都有一个家庭 ID (hh_id),并且我想将家庭人数存储在 hh_size 变量中。

我尝试了以下方法:

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

我希望 hh_size 变量包含每个观察值的家庭人数。但是,我得到一个只有 nan 的专栏。

当我单独使用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

如果我理解它,您必须将其转换为新的 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