У меня есть 25 переменных от DXCODE1 до DXCODE25, которые я хочу просмотреть, чтобы увидеть, соответствует ли какое-либо из этих значений для каждой строки icd_list. Например, в каждой строке я хочу выполнить сканирование от DXCODE1 до DXCODE25 и посмотреть, содержит ли какое-либо из них одно из следующих трех значений: «F32», «F33», «F34», если это так, то я хочу вернуть 1. Я попробовал следующее:
def scan_icd (row):
icd_list = ['F32', 'F33', 'F34']
for i in range(1, 26):
dx_code_loc = 'DXCODE' + str(i)
for j in range(0, len(icd_list)):
if icd_list[j] in row[dx_code_loc]:
return 1
df['ICD_DX'] = df.apply(scan_icd, axis=1)
Но я получил эту ошибку:
TypeError: ("argument of type 'float' is not iterable", 'occurred at index 1')
Также я хотел бы сделать его гибким, чтобы я мог как-то указать код icd в виде списка в параметре. Но я не знаю, как применять синтаксис:
def scan_icd (row, icd_list):
icd_list = icd_list
for i in range(1, 26):
dx_code_loc = 'DXCODE' + str(i)
for j in range(0, len(icd_list)):
if icd_list[j] in row[dx_code_loc]:
return 1
df['ICD_DX'] = df.apply(scan_icd (['F32', 'F33', 'F34']), axis=1)
TypeError: apply() got multiple values for argument 'axis'
===================
Edit:
Столбцы помечены как DXCODE1, DXCODE2, ... DXCODE25