У меня есть DataFrame nplt:
nplt
Out[120]:
sexage npark16cd population page
0 M00 E26000001 146.631840 NaN
1 M01 E26000001 122.677630 NaN
2 M02 E26000001 127.645516 NaN
3 M03 E26000001 138.313014 NaN
4 M04 E26000001 150.898252 NaN
5 M05 E26000001 149.086291 NaN
6 M06 E26000001 145.075953 NaN
7 M07 E26000001 159.893446 NaN
8 M08 E26000001 149.886962 NaN
9 M09 E26000001 182.406901 NaN
10 M10 E26000001 182.058425 NaN
11 M11 E26000001 186.962104 NaN
12 M12 E26000001 200.875284 NaN
13 M13 E26000001 209.038917 NaN
14 M14 E26000001 163.530837 NaN
15 M15 E26000001 161.171527 NaN
I wi sh, чтобы заполнить страницу столбца условно по признаку пола, например, где пол равен M00, M01, M02, M03 I w sh page быть p0_3 и где пол равен M04, M05, M06, а i sh страница будет p4_6, непрерывно, например:
nplt
Out[120]:
sexage npark16cd population page
0 M00 E26000001 146.631840 p0_3
1 M01 E26000001 122.677630 p0_3
2 M02 E26000001 127.645516 p0_3
3 M03 E26000001 138.313014 p0_3
4 M04 E26000001 150.898252 p4_6
5 M05 E26000001 149.086291 p4_6
6 M06 E26000001 145.075953 p4_6
7 M07 E26000001 159.893446 NaN
8 M08 E26000001 149.886962 NaN
9 M09 E26000001 182.406901 NaN
10 M10 E26000001 182.058425 NaN
11 M11 E26000001 186.962104 NaN
12 M12 E26000001 200.875284 NaN
13 M13 E26000001 209.038917 NaN
14 M14 E26000001 163.530837 NaN
15 M15 E26000001 161.171527 NaN
и так далее. Пол в моем фактическом DataFrame варьируется от M00-M90 до F00-F90.
Есть ли эффективный способ сделать это?
Заранее большое спасибо.
попробуйте объяснить более четко, я бы хотел, чтобы эквивалент для серий F00, F01, F02 и F03 и M00, M01, M02 и M03 имел значение p0_3 на странице, а для M04, M05, M06 и F04, F05 и F06 иметь значение p4_6 для страницы. Например:
nplt
Out[120]:
sexage npark16cd population page
0 M00 E26000001 146.631840 p0_3
1 M01 E26000001 122.677630 p0_3
2 M02 E26000001 127.645516 p0_3
3 M03 E26000001 138.313014 p0_3
4 M04 E26000001 150.898252 p4_6
5 M05 E26000001 149.086291 p4_6
6 M06 E26000001 145.075953 p4_6
7 M07 E26000001 159.893446 p7_10
8 M08 E26000001 149.886962 p7_10
9 M09 E26000001 182.406901 p7_10
10 M10 E26000001 182.058425 p7_10
11 M11 E26000001 186.962104 NaN
12 M12 E26000001 200.875284 NaN
13 M13 E26000001 209.038917 NaN
14 M14 E26000001 163.530837 NaN
15 M15 E26000001 161.171527 NaN
2355 F80 W18000003 102.553290 nan
2356 F81 W18000003 115.013810 nan
2357 F82 W18000003 94.524735 p82_85
2358 F83 W18000003 77.677229 p82_85
2359 F84 W18000003 103.239723 p82_85
2360 F85 W18000003 82.496796 p82_85
2361 F86 W18000003 71.609379 p86_90
2362 F87 W18000003 83.220993 p86_90
2363 F88 W18000003 80.120960 p86_90
2364 F89 W18000003 65.742056 p86_90
2365 F90 W18000003 204.664775 p86_90
Я бы хотел, чтобы группировки в M00-M90 и F00-F90 (p0_4, p4_6, p7_10 ... p86_90) были одинаковыми. Значения на странице столбца будут выборочными слоями в будущем коде.
Причиной того, что на странице столбца имеется разное количество элементов, является то, что они основаны на возрастных группах, которые имеют различные диапазоны, например, 0-3 , 4-6, 5-7, 8-12, 13, 14-18 ... вплоть до 90.
Я пытался:
nplt.loc[(nplt['sexage'] == {'M00', 'M01', 'M02', 'M03', 'F00', 'F01',
'F02', 'F03'}), 'page'] = 'p0_3'
Однако это делает не работа. Любая помощь очень признателен, пожалуйста.