使用R计算家庭应获补贴收入:处理hh_income为0的场景
家庭收入修正实现方案(Pandas)
以下是针对需求的具体实现代码,基于Python的Pandas库:
方法1:直接针对收入为0的行替换
import pandas as pd # 假设你的数据框名为df # 1. 计算每个家庭的人数,生成hh_id到人数的映射字典 household_count = df.groupby('hh_id').size().to_dict() # 2. 对所有hh_income为0的行,替换为对应家庭人数×175 df.loc[df['hh_income'] == 0, 'hh_income'] = df.loc[df['hh_income'] == 0, 'hh_id'].map(household_count) * 175
方法2:先定位收入为0的家庭再统一替换(适合家庭内收入值一致的场景)
如果同一家庭的hh_income值是统一的(即不会出现同一家庭部分行收入为0、部分不为0的情况),可以用更高效的方式:
# 1. 筛选出所有收入为0的家庭ID zero_income_households = df[df['hh_income'] == 0]['hh_id'].unique() # 2. 计算这些家庭的人数映射 target_hh_size = df[df['hh_id'].isin(zero_income_households)].groupby('hh_id').size().to_dict() # 3. 批量替换这些家庭的收入值 df.loc[df['hh_id'].isin(zero_income_households), 'hh_income'] = df['hh_id'].map(target_hh_size) * 175
说明
groupby('hh_id').size()用于统计每个家庭的成员数量;map()方法可以快速将hh_id对应到家庭人数;loc用于精准定位需要修改的行和列,确保只修改符合条件的数据。
内容的提问来源于stack exchange,提问作者Ted_wid8
相关产品推荐
相关产品推荐

