Я изменил ваши данные в вашем фрейме данных, чтобы np.nan соответствовал np.nan, а не строкам.
test = pd.DataFrame(
{
"code": [
np.nan,
"XXX",
"USA",
"GBR",
"GBR",
"SWE/n",
"123",
"abs",
"ABCC",
"ABC",
np.nan,
np.nan,
]
}
)
print(test)
code
0 NaN
1 XXX
2 USA
3 GBR
4 GBR
5 SWE/n
6 123
7 abs
8 ABCC
9 ABC
10 NaN
11 NaN
Тогда все, что вам нужно сделать, это отфильтровать np.nan при выполнении ваших расчетов.
test["code_convert"] = test[test.notna()].apply(
lambda x: coco.convert(names=x, to="ISO3")
)
У меня не установлен конвертер страны, но если я упросту, применить к тесту:
test["code_convert"] = test[test.notna()].apply(
lambda x: x + "_solution"
)
print(test)
code code_convert
0 NaN NaN
1 XXX XXX_solution
2 USA USA_solution
3 GBR GBR_solution
4 GBR GBR_solution
5 SWE/n SWE/n_solution
6 123 123_solution
7 abs abs_solution
8 ABCC ABCC_solution
9 ABC ABC_solution
10 NaN NaN
11 NaN NaN