Демонстрация.
В «HASAJOB» 1 означает «имеет работу», в противном случае — 0.
В «JOB1» и «JOB2» 2 означает «имеет работу в частном секторе», в противном случае — 1.
В «ЧАСЫ1» и «ЧАСЫ2» сообщают о количестве отработанных часов в день. Если 999, то о них не сообщили.
Код: Выделить всё
# import module
import pandas as pd
# assign data
survey = pd.DataFrame({'HASAJOB': [1, 1, 1, 1, 1, 1, 1, 0, 0, 0],
'JOB1': [1, 2, 2, 2, 1, 2, 2, None, None, None],
'HOURS1': [999, 8, 7, 999, 8, 6, 6, None, None, None],
'JOB2': [2, None, 2, None, None, 1, None, None, None, None],
'HOURS2': [4, None, 999, None, None, 999, None, None, None, None]
})
hasajob = survey[survey['HASAJOB'] == 1] # Fiter respondants with a job
work_in_private_sector = hasajob[(hasajob['JOB1'] == 2) | (hasajob['JOB2'] == 2)] # Filter respondants with a job in the private sector
Код: Выделить всё
HASAJOB JOB1 HOURS1 JOB2 HOURS2
0 1 1.0 999.0 2.0 4.0
1 1 2.0 8.0 NaN NaN
2 1 2.0 7.0 2.0 999.0
3 1 2.0 999.0 NaN NaN
5 1 2.0 6.0 1.0 999.0
6 1 2.0 6.0 NaN NaN
Я часами думал, как это сделать, но так и не нашел.
Я попробовал первым:
Код: Выделить всё
work_in_private_sector_and_report_hours = work_in_private_sector[((hasajob['JOB1'] == 2) & (hasajob['HOURS1'] != 999)) | ((hasajob['JOB2'] == 2) & (hasajob['HOURS2'] != 999))]
Код: Выделить всё
HASAJOB JOB1 HOURS1 JOB2 HOURS2
0 1 1.0 999.0 2.0 4.0
1 1 2.0 8.0 NaN NaN
2 1 2.0 7.0 2.0 999.0
5 1 2.0 6.0 1.0 999.0
6 1 2.0 6.0 NaN NaN
Подробнее здесь: https://stackoverflow.com/questions/788 ... conditions