使用 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
我有一个包含个人及其家庭 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