Я хочу вернуть столбец Scoring Site
, который отражает P2 Actual Scan Site
, но только если P2 Actual Scan Site
считается действительным.
Входные данные:
Кадр данных sites_exams_df
, включая столбецкоторый проверяет правильность Valid Site for Exam?
, например:
SCI DBN4 Valid Site for Exam?
0 NaN 02L298 NaN
1 NaN 02L416 NaN
2 NaN 02L420 NaN
3 SCI, 02L475 02L475
Мой текущий фрейм данных с P2 Actual Scan Site
:
P2 Actual Scan Site
0 -
1 10L445
2 10L445
3 02L475
4 02L475
5 27L400
6 00000C
Желаемый вывод:
P2 Actual Scan Site Scoring Site
0 - NaN
1 10L445 10L445
2 10L445 10L445
3 02L475 02L475
4 02L475 02L475
5 27L400 27L400
6 00000C NaN
Примечаниечто последний школьный код возвращает NaN, поскольку он не считается действительным сайтом (а также -
).
Все остальные школьные коды возвращаются в том виде, в каком они есть.
Текущий код:
# create Scoring Site column
sites_exams_df['Valid Site for Exam?'] = np.where(sites_exams_df[exam].notnull(),sites_exams_df['DBN4'],
np.nan) # check what scoring sites are there for this exam
valid_sites = sites_exams_df['Valid Site for Exam?'].dropna().values
# attempt 1
df['Scoring Site'] = np.where(df['P2 Actual Scan Site'] in valid_sites,
df['P2 Actual Scan Site'],np.nan)
# attempt 2
df['Scoring Site'] = df.apply(lambda x: df['P2 Actual Scan Site'] if x in valid_sites else np.nan)
Оба дают мне ошибки длины:
попытка 1 - raise ValueError("Lengths must match to compare")
ValueError: Lengths must match to compare
попытка 2 - ValueError: ('Lengths must match to compare', 'occurred at index DBN - Exam')