|
5 | 5 | construct_tax_units_acs, |
6 | 6 | ) |
7 | 7 | from policyengine_us_data.storage import STORAGE_FOLDER |
| 8 | +from policyengine_us_data.utils.source_quality import require_columns_present |
8 | 9 | from pandas import DataFrame |
9 | 10 | import numpy as np |
10 | 11 | import pandas as pd |
@@ -76,21 +77,24 @@ def add_person_variables( |
76 | 77 | .loc[person["household_id"]][["RNTP", "TAXAMT"]] |
77 | 78 | .values |
78 | 79 | ) |
79 | | - for source_flag, output_flag in [ |
| 80 | + allocation_flag_columns = [ |
80 | 81 | ("FRNTP", "rent_is_allocated"), |
81 | 82 | ("FTAXP", "real_estate_taxes_is_allocated"), |
82 | | - ]: |
83 | | - if source_flag in household: |
84 | | - person[output_flag] = ( |
85 | | - household.set_index("household_id") |
86 | | - .loc[person["household_id"]][source_flag] |
87 | | - .fillna(0) |
88 | | - .astype(int) |
89 | | - .ne(0) |
90 | | - .values |
91 | | - ) |
92 | | - else: |
93 | | - person[output_flag] = False |
| 83 | + ] |
| 84 | + require_columns_present( |
| 85 | + household.columns, |
| 86 | + [source_flag for source_flag, _ in allocation_flag_columns], |
| 87 | + source_name="raw Census ACS household table", |
| 88 | + ) |
| 89 | + for source_flag, output_flag in allocation_flag_columns: |
| 90 | + person[output_flag] = ( |
| 91 | + household.set_index("household_id") |
| 92 | + .loc[person["household_id"]][source_flag] |
| 93 | + .fillna(0) |
| 94 | + .astype(int) |
| 95 | + .ne(0) |
| 96 | + .values |
| 97 | + ) |
94 | 98 | acs["is_household_head"] = person.SPORDER == 1 |
95 | 99 | factor = person.SPORDER == 1 |
96 | 100 | person.rent *= factor * 12 |
|
0 commit comments